spiderflow 在新闻抓取中使用总结

143 阅读2分钟

流程图:

新闻抓取都是'列表-详情'模式, 流程图如下: 新闻抓取流程图.png

  1. 定义列表页url, 获取列表页的html
  2. 解析列表页html, 获取详情页url
  3. 获取详情页html
  4. 解析详情页各字段,如:标题,发布时间,正文
  5. 存入数据库

spiderflow 左侧有十多个节点,但常用的就三个:

  • 获取html源码

  • 输出到数据库

  • 字段抽取

技巧总结:

新闻主要采集标题,时间,正文,url 4个字段。

  1. 新闻的标题可以从meta ,title区, 文本区获取。
  2. 新闻发布时间可以从meta区,正文区获取。
  3. 新闻正文的抽取,范围会存在过大或过小的问题,这时需些特殊处理。
  • 可以分成多个字段,content1,content2,content3, 每个字段抽取正文的一部分,输出时把三个字段拼接到一起。
  • 或者抽取一个数组,再用join() 把数组拼接成字符串。
  1. 正文中图片的处理:正文中的图片,有时会是相对路径,采下来会看不到图片,处理方法有2个
  • 一种是路径补全(这有跨域的风险,即在另一域名不让访问图片),
  • 一个是图片下载到本地(这种可以避免跨域的问题,但比较占硬盘空间)。
  1. 新闻的查重,新闻的第一次抓取会有回朔数据的要求,抓取多页,这有个翻页抓取的问题。在更新抓取中,只抓取第一页就可以,这有查重的问题,点击 自动去重 并配合之后条件转移的 ${resp!=null}, 实现查重。

spiderflow 不足:

spiderflow 抓取时,内容在html,或ajax比较好用。selenium 不好用,不方便。经常会出现开了十多个selenium,没有关闭的情况,这很占内存。