流程图:
新闻抓取都是'列表-详情'模式, 流程图如下:
- 定义列表页url, 获取列表页的html
- 解析列表页html, 获取详情页url
- 获取详情页html
- 解析详情页各字段,如:标题,发布时间,正文
- 存入数据库
spiderflow 左侧有十多个节点,但常用的就三个:
-
获取html源码
-
输出到数据库
-
字段抽取
技巧总结:
新闻主要采集标题,时间,正文,url 4个字段。
- 新闻的标题可以从meta ,title区, 文本区获取。
- 新闻发布时间可以从meta区,正文区获取。
- 新闻正文的抽取,范围会存在过大或过小的问题,这时需些特殊处理。
- 可以分成多个字段,content1,content2,content3, 每个字段抽取正文的一部分,输出时把三个字段拼接到一起。
- 或者抽取一个数组,再用join() 把数组拼接成字符串。
- 正文中图片的处理:正文中的图片,有时会是相对路径,采下来会看不到图片,处理方法有2个
- 一种是路径补全(这有跨域的风险,即在另一域名不让访问图片),
- 一个是图片下载到本地(这种可以避免跨域的问题,但比较占硬盘空间)。
- 新闻的查重,新闻的第一次抓取会有回朔数据的要求,抓取多页,这有个翻页抓取的问题。在更新抓取中,只抓取第一页就可以,这有查重的问题,点击 自动去重 并配合之后条件转移的 ${resp!=null}, 实现查重。
spiderflow 不足:
spiderflow 抓取时,内容在html,或ajax比较好用。selenium 不好用,不方便。经常会出现开了十多个selenium,没有关闭的情况,这很占内存。