wiki页面文本挖掘
import os,sys
import sys
from bs4 import BeautifulSoup
import urllib.request
# reload(sys)
# sys.setdefaultencoding('utf-8')
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_PATH)
DATA_PATH = BASE_PATH + os.path.sep + 'scripts' + os.path.sep
import time,configparser,re
#from http.u_http import HttpClient
#from data.read_wiki import read_wiki
#from data.read_wiki import wiki
import json
#from User import User
#httpClient = HttpClient()
import requests def login(url,body,url1):
s=requests.post(url=url,data=body,allow_redirects=False)
#print(s.status_code)
JSESSIONID=s.cookies['JSESSIONID']
cks={
'JSESSIONID':JSESSIONID
}
res=requests.get(url1,cookies=cks)
res.encoding='utf-8'
res=res.text
#使用heml解释器进行解析
soup=BeautifulSoup(res,'html.parser')
#在soup中找到为tbody的节点
menu=soup.findAll("tbody")
values=','.join(str(v) for v in menu)
soup2=BeautifulSoup(values,'html.parser')
menu2=soup2.findAll("tr")
values2=','.join(str(v) for v in menu2)
soup3=BeautifulSoup(values2,'html.parser')
menu3=soup3.findAll("td")
values3=','.join(str(v) for v in menu3)
soup4=BeautifulSoup(values3,'html.parser')
soup4=str(soup4)
timeStr = time.strftime("%Y%m%d%H%M%S", time.localtime())
#标题
subject = timeStr
with open(DATA_PATH+subject,"w",encoding='utf-8') as op:
op.write(soup4)
#生成configparser对象
deploy_order = configparser.ConfigParser()
deploy_order.read('online_list.conf')#所有项目清单
#赋值两个空列表
deploy, plan = [], []
plan_order=[]
#得到模块名
for section in deploy_order.sections():
#-options(section) 得到该section的所有option(把模块下的所有所有项目赋值到x
#在加进空列表 )
[deploy.append(x) for x in deploy_order.options(section)]
print(deploy)
#循环deploy_order列表(所有的项目),一个一个取值
for order in deploy:
with open(DATA_PATH+subject,'rb') as op:
data=op.read()
data=data.decode('utf-8')
#print(data)
#data=data.decode('utf-8')
if order in data:
plan.append(order)
else:
print("%s没找到"%order)
#'comx-bs'不发
for line in plan:
if line == 'comx-bs':
plan.remove('comx-bs')
else:
pass
#得到发版项目列表
print(plan)
for plan_name in plan:
with open(DATA_PATH+subject,'rb') as op:
data=op.read()
data=data.decode('utf-8')
res_th = plan_name+'/(.*?)</td>'
m_th = re.findall(res_th,data,re.S)
#print(m_th)
plan_order.append(m_th)
#得到发版项目版本号列表
print(plan_order)
plan_order2=[]
for line in plan_order:
#如果列表有多个参数,就取最新的
if len(line)>1:
plan_order2.append(line[-1])
else:
plan_order2.append(line)
print(plan_order2)
plan_order3=[]
for x in plan_order2:
#将列表准换成字符串
x=''.join(x)
#匹配数字.数字的格式
plan_order3.append(re.findall(r'\d.*\d.*\d',x))
print(plan_order3)
#将列表转换成字符串
plan_order4=[]
for i in plan_order3:
i=''.join(i)
plan_order4.append(i)
print(plan_order4) def run(pageId):
pageId=str(pageId)
url = "http://wiki.intra.gomeplus.com/pages/viewpage.action?"+'pageId='+pageId
print(url)
url1='http://wiki.intra.gomeplus.com/dologin.action'
body={
'os_username':'wangsen',
'os_password':'WANGs1.',
'login':'登录',
'os_destination':''
}
login(url1,body,url)
# print(value)
# #body如果需要就填上数据如果不需要就置空,body={}
# body = {}
#
# #接口访问的方式 get或post
# u_method = "get"
#
# #处理v2接口需要在header里加“Accept”
# header = {}
# # A451ED019F130356AEF51CB768540B86
# #value = "A3B6F39B9F9925E6BD5D61280A787892"
# header["Content-Type"] = "application/x-www-form-urlencoded"
# header["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
# cookie='JSESSIONID='+value+'; doc-sidebar=300px;confluence.list.pages.cookie=list-content-tree; \
# confluence.browse.space.cookie=space-pages;Hm_lvt_4d914dda44888419a4588c6a4be8edcc=1473650378'
# print(cookie)
# header['Cookie'] =cookie
# # if ApiIsV2(url):
# # header["Content-Type"] = "application/x-www-form-urlencoded"
# # header["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
#
# #verify为验证项列表,用于检查返回内容中的关键字
# verify = []
#
# postData={}
# #执行被测接口
# result_dict = httpClient.api_verify(url,postData,u_method,header,verify,body)
# print(result_dict)
#接受发版列表
#faban_list=read_wiki(result_dict) #判断是不是v2接口
# def ApiIsV2(url):
# if "v2" in url:
# return True
# else:
# return False #前提操作
# def preStep(self):
# "前提操作"
# url = ""
# postData = {}
# u_method = "get"
# header = {}
# verify = []
#
# response = httpClient.api_request(url, postData, u_method, header, verify)
# return response # #将公参和必填参数组合
# def sign_str(self,data,isV2=False):
# publicParaV1 = {
# "ip":"0.0.0.0",
# "appType":"1",
# "clientOsVersion":"8.4",
# "sortType":"0",
# "pubPlat":"0120102002000000",
# "appVersion":"v1.0.2.33",
# "latitude":"39.964707",
# "otherDevInfo":"otherDevInfo",
# "netType":"3G",
# "numPerPage":"5",
# "devId":"0",
# "clientOs":"1",
# "mac":"00000000",
# "lastRecordId":"0",
# "longitude":"116.47308",
# "pageNum":"1",
# "order":"2",
# "phoneType":"iPhone"
# }
#
# publicParaV2 = {
# "integrity":"full",
# "device":"iOS/9.2.1/iPhone/IPhone12345678",
# "app":"001/1111111111111",
# "appVersion":"1.0.1",
# "net":"",
# "accessToken":"",
# "traceId":"",
# "jsonp":""
# }
# if isV2:
# dictMerged = dict(data, **publicParaV2)
# else:
# dictMerged = dict(data, **publicParaV1)
#
# return dictMerged if __name__ == "__main__": pageId=input('wiki_number:')
run(pageId)
wiki页面文本挖掘的更多相关文章
- 如何使用Web Service新建和更新Wiki页面的内容
公司内部有很多部门都创建了Wiki库,来做知识共享.公司是Hosting的SharePoint环境,不能写服务器端代码,要操作Wiki只能通过Web Service来完成,所以,碰到两个情况: 1)W ...
- Confluence Wiki -- 页面限制
Confluence Wiki 中 [页面设置] 应该如何理解? 当一个用户有这个权限后,这个用户可以对一个页面做限制,可以限制这个页面不能被其他用户浏览或编辑: 反之,如果没有这个权限,那么这个用户 ...
- working with fitnesse wiki pages
fitnesse提供一个简单易用的wiki创建一个web页面用于测试.测试页面有一个button,允许所有的测试在这个页面运行,因此任何人在任何时间都可以去这个页面点击这个按钮,查看测试是否通过.fi ...
- SharePoint 2013怎样创建Wiki库
们使用Wiki页面来分享知识,增进团队合作.下面我将向大家展示SharePoint 2013 Wiki的使用方法.教程我都将以这张Wiki页面(即当前页)为示例. 编辑页面 如要编辑页面,单击顶部Ed ...
- 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
转自http://huacnlee.com/blog/use-etag-in-your-rails-app-to-speed-up-loading/ 什么是 ETag 网上关于 ETag 的解释有很多 ...
- MPAndroidChart Wiki(译文)~Part 1
1. 基础入门 1.1 添加依赖 Gradle 工程添加依赖 (推荐使用) 项目级build.gradle中添加: allprojects { repositories { maven { url & ...
- 在linux下搭建wiki环境【转】
转自:http://blog.csdn.net/chy800/article/details/6906090 由于公司需要一个知识共享的系统,选择wiki来实现.经过准备决定使用Linux+xampp ...
- JS判断SharePoint页面编辑状态
这篇博客主要讲使用不同的客户端方式来判断页面的编辑模式. 1.当页面处于发布状态时,可以使用下面两种方式:if(g_disableCheckoutInEditMode == true) { ale ...
- 嵌入式表单字段中的内容可能被server更改以删除不安全的内容。是否要又一次载入您的页面以查看保存结果?
嵌入式表单字段中的内容可能被server更改以删除不安全的内容.是否要又一次载入您的页面以查看保存结果? 近期有朋友问到,当他在SharePoint首页上进行编辑时.插入一段代码. 完 ...
随机推荐
- [Paper Reading] Show and Tell: A Neural Image Caption Generator
论文链接:https://arxiv.org/pdf/1411.4555.pdf 代码链接:https://github.com/karpathy/neuraltalk & https://g ...
- Fabric docker-compose volumes配置解析
chaincode: container_name: chaincode image: hyperledger/fabric-ccenv tty: true environment: - GOPATH ...
- 自助机dmv?鸡肋
今天终于扛着懒癌去了一趟所谓的dmv自动机(dmv now kiosk),发现此机器只处理有关vehicle的三种事项,比如vehicle的new registration之类的,如果是其它事情还是得 ...
- 最新 人民网java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.人民网等10家互联网公司的校招Offer,因为某些自身原因最终选择了人民网.6.7月主要是做系统复习.项目复盘.LeetCo ...
- elasticsearch 安装head
git clone https://github.com/mobz/elasticsearch-head.git yum install nodejs npm install 修改Elasticsea ...
- 开发者福利!请及时领取您的SpreadJS临时部署授权码
SpreadJS 于2015年发布,至今已有4年历史,作为一款基于 HTML5 的纯前端电子表格控件,在短短四年间,即在财税.金融.计算机软件与服务.工业制造.大数据应用.电力能源.交通.物流运输.医 ...
- Beanutils.copyProperties( )用法及重写提高效率
参考地址:https://blog.csdn.net/w05980598/article/details/79134379 待研究中.....
- Java手写简单Linkedlist一(包括增加,插入,查找,toString,remove功能)
@Java300 学习总结 一.自定义节点 LinkList底层为双向链表.特点为查询效率低,但增删效率高,线程不安全. 链表数据储存在节点,且每个节点有指向上个和下个节点的指针. 创建ggLinke ...
- pt-online-schema-change使用
MySQL ddl 的问题现状 在 运维mysql数据库时,我们总会对数据表进行ddl 变更,修改添加字段或者索引,对于mysql 而已,ddl 显然是一个令所有MySQL dba 诟病的一个功能,因 ...
- Till I Collapse CodeForces - 786C (主席树区间加,二分最小值)
大意: 给定序列, 将序列划分为若干段, 使得每段不同数字不超过k, 分别求出k=1...n时的答案. 考虑贪心, 对于某个k 从1开始, 每次查询最后一个颜色数<=k的点作为一个划分, 直到全 ...