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. Mysql的binlog 和InnoDB的redo-log

    来源:https://www.jianshu.com/p/4bcfffb27ed5 mysql日志系统之redo log和bin log Mr林_月生关注 12018.12.02 01:35:06字数 ...

  2. 【DSP开发】DSP能用VS2010生成的链接库文件吗?

    [DSP开发]DSP能用VS2010生成的链接库文件吗? 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:可能这个问题让行家看上去就会莞尔一笑,但是很多 ...

  3. YUV格式全解

    YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大.YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多 ...

  4. 解决element-ui按需引入不了Scrollbar的问题

    一.报错原因 在我想按需引入element-ui时,突然报错: 这个报错来的有点措不及防.明明在页面当中能够使用,为仕么在单独引入时却不能引用了,真是百思不得其解. 经过在百度上的查找才知道,原来Sc ...

  5. POJ 1789 Truck History【最小生成树模板题Kruscal】

    题目链接:http://poj.org/problem?id=1789 大意: 不同字符串相同位置上不同字符的数目和是它们之间的差距.求衍生出全部字符串的最小差距. #include<stdio ...

  6. java核心技术(第四章)对象与类

    4.1 面向对象程序设计概述 每个对象包含对用户公开的特定功能部分和隐藏的实现部分. 4.1.1类 由类构造对象的过程称为创建类的实例. 封装(数据隐藏)是与对象有关的.从形式上看,封装不过是将数据和 ...

  7. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest (西安邀请赛重现) J. And And And

    链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只 ...

  8. Django 实现登录后跳转

    说明 实现网页登录后跳转应该分为两类:即登录成功后跳转和登录失败再次登录成功后跳转.参考网上内容,基本都只实现了第一类.而没有实现第二类. 实现 为了能让登录失败后再次登录成功后还能实现跳转.我这里采 ...

  9. spring入门一:框架整体简介

    1:spring的基本框架主要包含六大模块:DAO.ORM.AOP.JEE.WEB.CORE DAO:(Data Access Object) 数据访问对象,是一个面向对象的数据库接口. ORM:(O ...

  10. Thinking In Java 4th Chap3 操作符

    若String后接一‘+’运算符,其后元素自动转化为String类型 注意:若对对象赋值另一对象,操作对应的是引用,如c=d,则c和d都指向原来d指向的对象 生成随机数:Random rand=new ...