Redmine系统通过bug号解析页面内容及下载附件
2023-02-18 16:39:33 时间
from requests_html import HTMLSession
from urllib.request import unquote
import os
'''
redmine系统通过bug号解析页面内容及下载附件
'''
base_url = ''
cookies = dict(
_redmine_session='')
session = HTMLSession()
def get_bug(num):
url_sit = base_url % num
r = session.get(url_sit, cookies=cookies)
print('BUG地址 : ', r.html, '\
\
')
# 解析内容节点
print('====================开始时间====================')
print(r.html.xpath('//table[@class="attributes"]/tr[1]/td[2]/text()'), '\
\
')
html = r.html.xpath('//div[@id="history"]/div')
print('====================BUG描述====================')
print(r.html.xpath('//div[@class="description"]/div[2]/p/text()'), '\
\
')
print('====================更新记录====================')
for item in html:
print(item.xpath('//div/h4/a/text()'))
print(item.xpath('//div/div/p/text()'), '\
\
')
# 解析附件节点
html = r.html.xpath('//div[@class="attachments"]/p/a/@href')
if len(html) > 0:
create_subsidiary_dir(num)
for item in html:
if 'download' in item:
save_subsidiary('url' + item, num)
print('下载完毕')
def create_subsidiary_dir(dirs):
if not os.path.exists(dirs):
os.mkdir(dirs)
def save_subsidiary(url, num):
print('附件地址 :', url)
r = session.get(url, cookies=cookies)
with open(num + '/' + unquote(os.path.basename(url), encoding='utf-8'), 'wb') as wf:
wf.write(r.content)
if __name__ == '__main__':
index = input('请输入BUG号\
')
get_bug(index)
相关文章
- Vue面试必须会的Proxy
- Java面试题总结
- 记一次 .NET 某桌面奇侠游戏 非托管内存泄漏分析
- 2021 VDC :vivo 互联网服务亿级用户的技术架构演进之路
- vivo浏览器的快速开发平台实践-总览篇
- 字节码引用检测原理与实战
- vivo 敏感词匹配系统的设计与实践
- Redis线程模型的前世今生
- 服务API版本控制设计与实践
- Chrome 插件特性及实战场景案例分析
- vivo统一告警平台设计与实践
- 如何“拼”出一个页面-游戏中心模块化实践
- 深入剖析 RocketMQ 源码 - 消息存储模块
- vivo 全球商城:商品系统架构设计与实践
- 深入剖析Redis客户端Jedis的特性和原理
- 高并发场景下JVM调优实践之路
- 你分库分表的姿势对么?——详谈水平分库分表
- 高效动画实现原理-Jetpack Compose 初探索
- Redis大集群扩容性能优化实践
- 深入剖析 Spring WebFlux