请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于去重的两点疑惑

1、如果爬虫不重启,scrapy自带的去重和redis都可以很方便的去重。但如果爬虫爬完关闭后,重新启动,原来的url信息都没有了,还会从头再来一遍。怎么样发现新更新的链接?
2、有些页面url没有发生变化,但内容变了,比如论坛里回复的最后一页,上次爬取后又有新的回复,如果按url去重是不是会漏掉数据?

正在回答

1回答

bobby 2017-07-12 09:32:51
  1. scrapy的暂停和重启我在scrapy进阶中讲过, 如果按照那种方式启动和停止都不用担心中间的数据丢失,因为这些数据都会保存到文件中, 下一次重启会从这些文件加载, scrapy-redis的所有这些中间状态都是保存在redis中的更不会丢失, 这些我在课程中都详细的讲过的

  2. 对某一个url在yield request的时候, 设置一个参数 dont_filter=True后及时这个url已经存在在去重队列中也不会被过滤掉的, 你是不是课程中跳着看的, 这些内容我都讲解过的

0 回复 有任何疑惑可以回复我~
  • 提问者 RiverMa #1
    不是跳着看的,暂停后重启的保存机制也理解。疑惑的是爬虫全爬完了,下次再爬的时候的情况。是不是是可以通过信号在爬虫关闭的时候把爬过的地方存下来,再打开的时候再加载进来?
    回复 有任何疑惑可以回复我~ 2017-07-12 09:59:21
  • bobby 回复 提问者 RiverMa #2
    你说的是将已经爬取的url保存下来吧, 你可以参照scrapy暂定的那个逻辑源码自己修改一下, 如果你用scrapy-redis的话就不会存在这个问题, 因为所有信息一致都是保存在内存中的, 这些数据是不会丢失的
    回复 有任何疑惑可以回复我~ 2017-07-13 09:07:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信