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首页上进行编辑时.插入一段代码. 完 ...
随机推荐
- manjaro 给笔记本安装18.1系统时发现中文变成了方块字
解决方案: 1.连接网络,wifi/本地连接 2.打开终端 3.同步数据 如果是第一次,我们需要先同步本地数据包,先输入 sudo pacman -Syy 4.安装字体 sudo pacman -S ...
- 【log4j】的学习和理解 + 打印所有 SQL
log4j 1.2 学习和理解 + 打印所有 SQL 一.基本资料 官方文档:http://logging.apache.org/log4j/1.2/manual.html(理解基本概念和其他) lo ...
- C#操作Memcached帮助类
在VS中安装Memcached,直接在NuGet下搜索Memcached,选择第一个进行安装: 服务端资源下载地址:https://pan.baidu.com/s/1gf3tupl 接下来开始写程序, ...
- 修改Ubuntu屏幕的分辨率
最近重新装了一下环境,用vnc连接服务器,发现分辨率过低,于是查了一下如何修改分辨率,将其调高. 编辑/etc/default/grub 搜索"#GRUB_GFXMODE=640x4 ...
- TP5.1框架中的模型关联
一对一关联 hasOne('关联模型','外键','主键'); 关联模型(必须):关联的模型名或者类名 外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id 主键:当前 ...
- Git在IDEA工具中快捷拉取代码
在拥有GitLab账号之后, 进入IDEA中,点击vcs菜单-->Checkout from Version Control-->Git 随后会出现一个弹框,输入git上的项目地址点击CL ...
- 关于springboot的日志logging.file和logging.path的配置问题
springboot日志配置 logging.path logging.file 它们俩不会同时生效,so只配置其中一个就好了. eg1: 单独一个path配置 logging.path=E:/lo ...
- 数据结构C++实现-第一章 绪论
1.1 计算机与算法 1.1.3 起泡排序 void bubbleSort(int a[], int n) { for(bool sorted=false; !sorted; --n) { sorte ...
- 第8章:LeetCode--算法:二叉树的创建、遍历、删除、求高度
创建> 需要给定一个root的key,所有小于这个key的放到左边,大于key的放到右边, 比如vector<int> tree = {5,2,7,1,9,3,8},最后的树: 5 ...
- SWATS算法剖析(自动切换adam与sgd)
SWATS算法剖析(自动切换adam与sgd) 战歌指挥官 搬砖.码砖.代查水表.... 27 人赞同了该文章 SWATS是ICLR在2018的高分论文,提出的一种自动由Adam切换为SGD而实现更好 ...