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页面文本挖掘的更多相关文章

  1. 如何使用Web Service新建和更新Wiki页面的内容

    公司内部有很多部门都创建了Wiki库,来做知识共享.公司是Hosting的SharePoint环境,不能写服务器端代码,要操作Wiki只能通过Web Service来完成,所以,碰到两个情况: 1)W ...

  2. Confluence Wiki -- 页面限制

    Confluence Wiki 中 [页面设置] 应该如何理解? 当一个用户有这个权限后,这个用户可以对一个页面做限制,可以限制这个页面不能被其他用户浏览或编辑: 反之,如果没有这个权限,那么这个用户 ...

  3. working with fitnesse wiki pages

    fitnesse提供一个简单易用的wiki创建一个web页面用于测试.测试页面有一个button,允许所有的测试在这个页面运行,因此任何人在任何时间都可以去这个页面点击这个按钮,查看测试是否通过.fi ...

  4. SharePoint 2013怎样创建Wiki库

    们使用Wiki页面来分享知识,增进团队合作.下面我将向大家展示SharePoint 2013 Wiki的使用方法.教程我都将以这张Wiki页面(即当前页)为示例. 编辑页面 如要编辑页面,单击顶部Ed ...

  5. 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源

    转自http://huacnlee.com/blog/use-etag-in-your-rails-app-to-speed-up-loading/ 什么是 ETag 网上关于 ETag 的解释有很多 ...

  6. MPAndroidChart Wiki(译文)~Part 1

    1. 基础入门 1.1 添加依赖 Gradle 工程添加依赖 (推荐使用) 项目级build.gradle中添加: allprojects { repositories { maven { url & ...

  7. 在linux下搭建wiki环境【转】

    转自:http://blog.csdn.net/chy800/article/details/6906090 由于公司需要一个知识共享的系统,选择wiki来实现.经过准备决定使用Linux+xampp ...

  8. JS判断SharePoint页面编辑状态

    这篇博客主要讲使用不同的客户端方式来判断页面的编辑模式. 1.当页面处于发布状态时,可以使用下面两种方式:if(g_disableCheckoutInEditMode == true) {   ale ...

  9. 嵌入式表单字段中的内容可能被server更改以删除不安全的内容。是否要又一次载入您的页面以查看保存结果?

    嵌入式表单字段中的内容可能被server更改以删除不安全的内容.是否要又一次载入您的页面以查看保存结果?         近期有朋友问到,当他在SharePoint首页上进行编辑时.插入一段代码. 完 ...

随机推荐

  1. Python学习笔记——esle和with 语句

    1. else与while组合 def showMaxFactor(num): count = num // 2 while count > 1: if num % count == 0: pr ...

  2. poj2406(求字符串的周期,kmp算法next数组的应用)

    题目链接:https://vjudge.net/problem/POJ-2406 题意:求出给定字符串的周期,和poj1961类似. 思路:直接利用next数组的定义即可,当没有周期时,周期即为1. ...

  3. [CF429E]Points ans Segments_欧拉回路

    Points and Segments 题目链接:www.codeforces.com/contest/429/problem/E 注释:略. 题解: 先离散化. 发现每个位置如果被偶数条线段覆盖的话 ...

  4. [转帖]windows CIFS sabma协议识

    windows CIFS sabma协议识别 https://www.cnblogs.com/tcicy/p/9992871.html 公司的一个共享服务器就是 win2003的 mount 的时候 ...

  5. 【AI】【人工智能】【计算机】人工智能工程技术人员等职业信息公示

    人社厅发[2019]48号 各省.自治区.直辖市及新疆生产建设兵团人力资源社会保障厅(局).市场监管局.统计局,国务院各部门.各直属机构.各中央企业.有关社会组织人事劳动保障工作机构,中央军委政治工作 ...

  6. IDEA插件之CheckStyle

    1.是个啥? CheckStyle是一个检测代码格式是否满足规范的工具,其中用得比较多的是Google规范和Sun规范 2.下载安装插件 File -> Settings -> Plugi ...

  7. Nginx部署前后端分离的单页应用配置

    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  8. mysql 连接远程连接服务器 1130错误

    今天在用sqlyog连接非本地的Mysql服务器的数据库,居然无法连接很奇怪,报1130错误, ERROR 1130: Host 192.168.3.100 is not allowed to con ...

  9. day04_XPATH提取数据

    1.XML简介 1.1.定义 ​ 可扩展标记语言(EXtensible Markup Language) 1.2.特点 一种标记语言,很类似 HTML XML 的标签需要我们自行定义 被设计为具有自我 ...

  10. Creating mailbox file: 文件已存在

    原来linux下添加用户后,会在系统里自动加一个邮箱(系统邮箱),路径是:/var/spool/mail/用户名.可以直接用命令#rm -rf /var/spool/mail/用户名 这样就可以再次添 ...