spider-flow 介绍:
spider-flow 是一款开源的爬虫软件,采用工作流图形化界面,定义了爬虫的流程。
爬虫 技术点大致可分为两步: 抓取 html 源码,解析元素。
技术点:
- 抓取 html 源码 : HttpClient, Selenium
- 解析元素: 正则表达式,jsoup,xpath,jsonpath
技术栈:
- 前端: Layui,
- 后端:SpringBoot, MySql
常用模块:
Spider-flow 是一个插件式,可扩展的应用,Spider-flow-web,Spider-flow-api,Spider-flow-core 是主程序,包括了基本应用,有线程调度,抓取 html 源码,解析元素,储存进sql 库,日志。 另外的插件有:
- Selenium插件
- Redis插件
- OSS插件
- Mongodb插件
- IP代理池插件
- OCR识别插件
- 电子邮箱插件
程序要实现扩展,也很方便,基于工作流式的各种应用节点。
类图:
使用体会:
采集网站主要是政府类,企业类,行业类的新闻,政策。列表 - 详情页 模式。
- 抓取列表页源码
- 解析列表页各列表项
- 抽取列表中详情页url, 并抓取详情页源码
- 解析详情页中各字段
- 入sql库
使用列表-详情 模式 采集结点固定这5个。 复杂点的,需要另单写程序来完成采集工作:
- 有些列表页一次返回1000条的,在这解析会报错 ;
- selenium 使用体验不好,selenium 没有查重功能。
使用过程中遇到的bug:
-
查重算法用的布隆表达式,但在计算查重时,有时一个url 查不出来,要添加几次才能查出重复。
-
输入数据到excel 时,中间一些字段有空值,后面的值会顶上来,出现错列。
-
模板序列化时,采用xml + json 的格式,直接修改模板内容时,模板名字,线程数,优先次序 3个字段,没有回写。
模板自动生成:
现在市面上有些自动抽取字段的算法,在我另一篇文章中有提及。 链接:
基于前面的工作,实现了基于Spider-flow 模板自动生成算法。 在算法生成的模板中,再稍加修改,就可以完成模板的配置工作。大大的提高了效率。