Spider-flow 实践总结

1,151 阅读2分钟

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识别插件
  • 电子邮箱插件

     程序要实现扩展,也很方便,基于工作流式的各种应用节点。

类图:

使用体会:

       采集网站主要是政府类,企业类,行业类的新闻,政策。列表 - 详情页 模式。    

      

  1.   抓取列表页源码
  2.  解析列表页各列表项
  3.   抽取列表中详情页url,  并抓取详情页源码
  4.    解析详情页中各字段
  5.  入sql库

      使用列表-详情 模式 采集结点固定这5个。 复杂点的,需要另单写程序来完成采集工作:

  1. 有些列表页一次返回1000条的,在这解析会报错 ; 
  2. selenium 使用体验不好,selenium 没有查重功能。

使用过程中遇到的bug:

  1. 查重算法用的布隆表达式,但在计算查重时,有时一个url 查不出来,要添加几次才能查出重复。

  2. 输入数据到excel 时,中间一些字段有空值,后面的值会顶上来,出现错列。

  3. 模板序列化时,采用xml + json 的格式,直接修改模板内容时,模板名字,线程数,优先次序 3个字段,没有回写。

模板自动生成:

     现在市面上有些自动抽取字段的算法,在我另一篇文章中有提及。 链接:

基于前面的工作,实现了基于Spider-flow 模板自动生成算法。 在算法生成的模板中,再稍加修改,就可以完成模板的配置工作。大大的提高了效率。