python 内置浏览器robobrowser_使用Python语言实现基于robobrowser的mantis网络爬虫

本文介绍了如何使用Python的robobrowser库实现一个Mantis bug管理系统的网络爬虫,旨在提高工作效率,自动检索相似问题的关键信息。文章详细讲解了实现过程,包括登录、设置检索条件、获取和解析bug信息等步骤,并提供了源代码。
摘要由CSDN通过智能技术生成

一、前言

在上一家公司里,bug管理系统使用的是mantis,每天客户会报很多的问题,让相应owner进行分析解决。但是一款芯片拥有不同的客户在开案,比如6A938除了乐视在开案海信创维长虹等等厂家也都在开案,那么在开发中,不同客户遇到的问题有可能是相同的,有些问题在A厂家已经解决了,但是B厂家又重新报出了一样的问题,但因各项目相应模块的owner均是不同人负责的,所以就有可能导致了已解决问题会再次花人力时间去理清解决;除此之外,一般芯片方案商,各代芯片都是有关联的,各个高中低端芯片均可能多了些IP或少了些功能而不一样,但是它们意义上都是属于同一簇芯片的,而软件上也是大同小异,所以就有可能在C芯片上解决了的问题有可能在D芯片上又重现,这又浪费了不少人力时间;此外,在分析解决问题中,如果想了解类似问题的一个解决思路或方法,是否有一个快速的方法来获取到有用的信息呢?

基于此种种项目开发中的痛点难点,为了提高工作效率,为了提升项目进度,也为了减轻一线工程师的负担,结合自身所学到的Python知识,开发了一款基于robobrowser的mantis网络爬虫,主要借助mantis的服务器检索功能,自动抓取相似问题的重要信息如mantis description、status、mantis commit id、root cause及solution等等。其实,除了该工具,当时也有力建成立knowledge data bucket简称kdb邮件组,用于共享特殊问题特定难点技术的解决方案和实现原理等,但因各家项目压力且各人分享驱动力问题,并不能将太多问题和技术进行分享也就难于建立一个完善的收集机制,所以该mantis网络爬虫还是有一定实际意义的。因该工具脚本属于个人独立自主开发使用并非公司财产,现开源出来,大家可以借鉴一下简单的网络爬虫是如何实现的。

通过该文,你将了解到如下知识点:

1、如何通过robobrowser打开网页并使用自带检索功能搜索:

robobrowser国内国外的资料非常少,很多东西都是摸索出来的,它本质上是一个浏览器内核,不带UI,时间效率会提高在不用UI渲染上,它可以简单的打开一个网址并返回服务器端反馈回来的html页面,同时自带html页面分析处理功能,其实它内置了beautifulsoup(美丽的汤),我们主要用它来模拟真实的浏览器操作并获取关键信息后进行文本收集。

2、如何使用Python建立隐藏的window文件夹;

3、如何获取html表格并submit到服务端;

4、如何建立一个本地html不存在的表格但服务器端有的表格;

5、如何使用RE对已打开了的本地html网页进行搜索并保存有用信息;

6、如何使用RE进行多关键字搜索过滤;

7、如何重新设定cmd终端的缓冲大小以容纳更多终端信息;

8、Python的文本处理、输入编解码及系统操作;

......

二、实现细节

以脚本逻辑执行顺序来说明:

1、登录mantis:这里为了减少每次都要人工登录,使用了一个隐藏文件夹保存相应的登录账号密码,那么开始登陆后就需要判断是否存在这样的一个隐藏文件,如果不存在,那么新建一个,同时让用户在终端手动填写并保存,如果存在,那么就获取账号密码并将其submit到远端服务器,如果登录错误,那么就需要删除已保存的账号信息,见LoginMantis()函数详细代码;

2、设定要检索的projectID:实验中,发现需要处理一些编码存在的特殊字符,否则服务器会返回错误,见SetProjectForm()函数详细代码;

3、获取用户检索过滤表:该过滤表用户填完后是需要送给服务器并获取到有用信息的,包括设定服务器返回来的mantis条数为800每页面,该设定可以减少robobrowser打开网页数量并减小处理时间;包括mantis report时间,这里主要是建立一个获取到的html页面没有的表格但服务器可接受的时间表格;包括检索关键字,这个关键字是可以多个输入的但以空格分开,第一个关键字是服务器检索使用它决定着服务器响应时间意即我们的检索总时间,而其余剩下的关键字则是用于本地检索过滤用的;包括设定哪些status的mantis服务器返回,有两种选择,默认resolved,其余由new、reopen、feedback等,见FillMantisKeyWorld()函数详细代码;

4、获取所有的mantis bug信息:包括mantis id及所有的未显示全的mantis page,见GetAllBugInfo(PageNumber)函数详细代码;

5、解析每个打开的mantis bug并整理收集到文本:直接使用了robobrowser的find_all和find功能以及RE来搜索收集mantis description、status、mantis commit id、root cause及solution信息,见ParserAndWrite(file_handle)函数详细信息;

实际上,实现细节会很繁琐也不会有那么简单,这里只是大概罗列了一个大的枝干,感兴趣的建议阅读代码会获取到更多有用的信息!

三、操作说明

需要先安装相应库,执行如下命令:

pip install robobrowser

pip install pyinstaller # 主要为了打包脚本为exe工具,这样可不用依赖特定环境

执行如下命令打包脚本:

"D:\Program Files\Python27\Scripts\pyinstaller.exe" -F "C:\

Users\Administrator\Desktop\AI learning\MantisCrawler\MantisCrawler_2.7.py" -i "C:\Users\Administrator\Desktop\AI learni

ng\MantisCrawler\happy.ico

需要根据自身环境使用命令,执行 .\pyinstaller.exe --help可以查看pyinstaller的使用方法!

下面是使用操作说明:

1、登录界面

2、选择projectID(默认为“ALL Projects”)

3、设定mantis report date(默认为可查询的所有时间内)

4、mantis status过滤(默认所有status都会检索)

5、设定搜索关键字后开始检索

6、搜索完后会在执行档所在目录生成关键信息文档

四、实际效果

以下是检索“闪粉 HDMI”得到的结果,我们看到效果还是很不错的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值