wuvin
Always take risks!
Toggle navigation
wuvin
主页
实验室的搬砖生活
机器学习
公开的学术内容
公开的其他内容
About Me
归档
标签
友情链接
ZYQN
ihopenot
enigma_aw
hzwer
杨宗翰
大作业ReadMe
2018-07-01 13:57:11
904
0
0
wuvin
[toc] # 程序简介 * 这是srCaPP的GUI界面部分,为一些常见的爬虫操作设计了简单易用的交互可视化使用方法,网页爬取部分由Core内核驱动。 * 使用[样例视频](http://on9i1rseh.bkt.clouddn.com/project/simplescreenrecorder-2018-06-15_10.49.01.mp4)。 # 代码架构 ![title](http://on9i1rseh.bkt.clouddn.com/project/fd35e84abde7ffd3a9f587c9ece4ac18.png) ## 变量生成及运算 ### StringVar类 * 字符串内容储存在一个vector<string>当中,可以视为一个字符串集合,并且编写了一些易用的函数如集合的交、并、异或,对于每个字符串增加前缀,增加后缀,提取符合正则表达式的子串,保留符合正则表达式的字符串这样一些操作。 ### IntVar类 * 继承于StringVar类,并且增加了对于数值的额外操作函数,实际上储存还是以字符串形式储存在vector<string>当中。对于StringVar到IntVar的转换默认为把每个字符串转成数字然后再储存为字符串。增加了数值的加减乘除操作。 ### UrlVar类 * 继承于StringVar类,并增加了对于网页链接的额外操作函数,实际上储存还是以字符串形式储存在vector<string>当中。对于StringVar到IntVar的转换默认为把每个字符串补全http://开头。增加了链接的Http和Https之间的互相转换。 ### VarCreator类 * 实际上是一个工厂,用于创建以上三类Var变量,并且可以保存每个变量的创建配置。`calc()`为获得这个配置下得到的Var类,第二次以同样配置获得的时候,会直接返回之前的Var类,以此提高效率,减少重复计算。`recalc()`用于强制递归重算每个相关变量,以保证在部分外部数据修改的时候,能够获得正确的答案。 ## 浏览器内核 ### TinteractObject类 * 配合Qchannel实现Qt与浏览器内核脚本的交互。 ### objRender类 * 这个js类用于对于界面进行渲染,绘制各种各样的框。 ### objSelector类 * 这个js类用于管理用户选择的item集合,以及记录item属性,然后调用objRender来进行染色标记。 ### 右键菜单 * 调用了开源项目contextMenu来完成右键菜单的建立和管理。 ## UI界面 ![](http://on9i1rseh.bkt.clouddn.com/1530425011%281%29.jpg) * 红色框取为网页浏览部分,蓝色框区为变量操作部分。网页浏览部分为来自Chrome内核的QwebEngine。 ## 爬虫内核 ### spiderAdapter类 * 继承自Spider类([Spider类及爬虫部分文档](https://github.com/debug18/scrapp/tree/master/core/docs)),实现了传入一个网页集合,以及jQuery Selector 格式的目标集合,会对于每个网页进行爬取并提取目标的指定属性(如文本以及任意attributes),然后每个网页的爬取内容会放入一个字符串中,最终以一个字符串集合StringVar返回。每个爬取目标之间由`:::`隔开(演示视频为了展示效果,将`:::`的分隔符改为了`\n`)。 ## 主体管理 ### MainWindow类 * 维护了右侧上方的变量列表,以及处理双击选中事件,每次修改变量后更新变量预览值。 * 响应了所有菜单点击事件,实现了每个菜单项对应的函数。 * 响应了浏览器与Qt的交互事件,并对右侧参数框进行对应修改。 # 设计思想 * 爬虫与界面分离,这样适合分工合作,最后使用adapter统一起来,两边内部开发互不干扰。 * MainWindow类作为各部分之间连接的主要桥梁,使得各部分之间尽可能独立互补干扰,即使有一部分修改接口只需重新和MainWindow统一即可。 * 浏览器嵌入JS脚本,处理浏览器一些问题会更加高效简洁。 * 使用Creator创建Var类,Var类参数过多,创建复杂添加一个对象进行管理使用更加方便高效。 * 使用字符串集合作为变量基础,虽然之前考虑过是否改为可以支持多重集合嵌套而不是简单的一个字符串集合,但是发现那样用户操作需要指定更多内容,上手难度加大,虽然功能更强大,但是与本程序想要简化常见爬虫操作的初衷不符。最终采用简单易懂的字符串集合结构。
上一篇:
stage X
下一篇:
SGI STL源码阅读报告
0
赞
904 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册