使用Scrapy Middlewares来避免重新访问我以前刮过的页面的最合适的方法是什么?

0vvn1miw  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(94)

我有一个功能scrapy crawlspider,它可以从https://www.parkrun.org.uk/marple/results/weeklyresults/?runSeqNumber=100等页面上刮取信息。我已经将收集到的数据保存为csv格式。
这些事件每周重复一次,我想只收集新的信息,而不是抓取所有以前的事件。虽然这将加快我的过程,我的主要动机是避免对网站提出不必要的请求。
我曾经尝试过Deltafetch,但它似乎在我抓取的信息中抛出了错误,有很多重复的单个运行时间和其他奇怪的结果。
我的首选是使用Middlewares来检查之前抓取的事件URL列表(存储在csv文件或类似文件中),并防止对这些URL的请求,即使它们满足crawlspider.py中定义的规则。
我不知道如何最好地实现这一点,以及使用www.example.com文件的哪个部分middlewares.py来避免发出请求,而不是简单地在支付已经被访问后不下载数据。
你能提供的任何帮助都将不胜感激。

gcxthw6b

gcxthw6b1#

创建自定义蜘蛛中间件
编写自己的蜘蛛中间件
在产生请求之前,将URL存储在set中,然后在自定义蜘蛛中间件process_spider_input中检查URL是否在set中,如果存在,则丢弃。
别忘了启用setting.py中的中间件。

相关问题