scrapy:在特定日期之前停止抓取

时间:2018-10-30 05:43:07

标签: python scrapy

我正在尝试将论坛刮到某个日期,例如2018年1月1日。

问题:

比方说,论坛页面是一个包含没有日期的帖子列表的页面。问题在于每个帖子的日期信息仅存在于帖子页面(显示该帖子的实际内容)中。因此,在实际将帖子列表中的每个帖子抓取之前,我无法知道日期。我必须发出另一个请求来刮除帖子页面,以便首先获取日期信息,然后决定是否继续关注论坛页面的分页。

我希望蜘蛛会一直跟踪论坛页面的分页,直到日期为2018-01-01的帖子被废弃为止。

当前方法:

要在观察到2018年1月1日之后停止,我创建了一个类属性post_cont_dict来确定Spider是否应继续遵循论坛页面的分页。从帖子页面获取2018年1月1日之前的日期时,将显示蜘蛛网will pop the key out。在发布帖子页面请求之前,蜘蛛会先check whether post_cont_dict has the keyalso here)进入论坛页面

我还赋予了帖子页面优先于论坛页面的优先级,以避免在帖子页面之后发出的论坛页面请求>。但是,它并没有停止使用我的方法。

这是我的代码https://github.com/spacegoing/sentiment_mqd/blob/test/guba_spiders/guba_spiders/spiders/guba_spider.py

1 个答案:

答案 0 :(得分:0)

论坛是否提供按日期排序的功能? (您可能需要使用硒或飞溅之类的东西才能与页面进行交互) 如果论坛确实支持此功能,则可以: 1.)按日期排序 2.)浏览每个论坛帖子并跟踪日期 3.)当日期早于2018年1月1日时,您可以提出Close Spider例外:

https://doc.scrapy.org/en/latest/topics/exceptions.html#closespider

如果您没有按日期排序的功能,则在输入论坛帖子之前,您需要采取其他方式来假设或了解日期是什么。日期可能隐藏在数据标签或HTML中类似的内容中。