此代码是我的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就会增加。
答案 0 :(得分:2)
如果你需要你的蜘蛛停止爬行,那么这是正确的地方,因为有些东西表明没有更多有用的数据需要收集。
这也是正确的方法,使用详细的结束原因消息提升CloseSpider异常。
只有在检测到阈值后才收集物品时,管道才更合适,但如果它们全部是一次性的,这将浪费资源。