我有一个功能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来避免发出请求,而不是简单地在支付已经被访问后不下载数据。
你能提供的任何帮助都将不胜感激。
1条答案
按热度按时间gcxthw6b1#
创建自定义蜘蛛中间件
编写自己的蜘蛛中间件
在产生请求之前,将URL存储在set中,然后在自定义蜘蛛中间件
process_spider_input
中检查URL是否在set中,如果存在,则丢弃。别忘了启用setting.py中的中间件。