繁体   English   中英

Scrapy - 按日期划分链接

[英]Scrapy - Scraping links by date

是否可以通过与它们相关的日期刮取链接? 我正在尝试实现一个日常运行的蜘蛛,将文章信息保存到数据库,但我不想重新刮掉我之前已经删过的文章 - 即昨天的文章。 我跑过这个 SO帖子问同样的事情,并建议使用scrapy-deltafetch插件

但是,这依赖于针对存储在数据库中的先前保存的请求指纹检查新请求。 我假设如果每日抓取持续一段时间,则需要在数据库上存储大量内存,以存储已经被抓取的请求指纹。

因此,如果有一个像cnn.com这样的网站上的文章列表,我想要删除今天6/14/17发布的所有文章,但是一旦刮刀点击了日期列为6/13/17的文章,我想关闭蜘蛛并停止刮擦。 scrapy可以采用这种方法吗? 给定一页文章, CrawlSpider从页面顶部开始按顺序抓取文章吗?

刚刚接触Scrapy ,所以不知道该尝试什么。 非常感谢任何帮助,谢谢!

您可以使用自定义delta-fetch_key来检查日期和标题作为指纹。

from w3lib.url import url_query_parameter

...

def parse(self, response):
    ...
    for product_url in response.css('a.product_listing'):
        yield Request(
            product_url,
            meta={'deltafetch_key': url_query_parameter(product_url, 'id')},
            callback=self.parse_product_page
        )
    ...

我使用datetime.strptime(Item['dateinfo'], "%b-%d-%Y")从拼凑在一起的感兴趣项目信息组成一个日期。

之后,我只是在我的设置中针对配置的年龄进行检查,每次调用都可以覆盖它。 当您发现年龄太大或者您可以设置完成标志并在其他任何代码中对其执行操作时,您可以发出一个关闭。

不需要记住东西。 我在每天跑的蜘蛛上使用它,我只设置了24小时的年龄限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM