当页面的日期比昨天更早时停止Scrapy蜘蛛

时间:2017-11-04 10:55:51

标签: scrapy

此代码是我的Scrapy蜘蛛的一部分:

# scraping data from page has been done before this line

publish_date_datetime_object = (datetime.strptime(publish_date, '%d.%m.%Y.')).date()

yesterday = (datetime.now() - timedelta(days=1)).date()

if publish_date_datetime_object > yesterday:
    continue

if publish_date_datetime_object < yesterday:
    raise scrapy.exceptions.CloseSpider('---STOP---DATE IS OLDER THAN YESTERDAY')

# after this is ItemLoader and yield

这很好用。

我的问题是Scrapy蜘蛛最好的地方有这个代码/逻辑吗?

我不知道如何将它实施在另一个地方 也许它可以在管道中实现,但AFAIK管道在完成抓取后进行评估,这意味着我需要刮掉所有添加,甚至是我不需要的添加。
昨天的比例为5,而整页则为500 我认为移动代码来管理它没有任何好处,这意味着如果我只需要5个处理(下载和抓取)500就会增加。

1 个答案:

答案 0 :(得分:2)

如果你需要你的蜘蛛停止爬行,那么这是正确的地方,因为有些东西表明没有更多有用的数据需要收集。

这也是正确的方法,使用详细的结束原因消息提升CloseSpider异常。

只有在检测到阈值后才收集物品时,管道才更合适,但如果它们全部是一次性的,这将浪费资源。