簡體   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