簡體   English   中英

python/scrapy 問題:如何避免無限循環

[英]python/scrapy question: How to avoid endless loops

我正在使用網絡抓取框架 scrapy 來挖掘一些網站的數據。 我正在嘗試使用 CrawlSpider 並且頁面有一個“返回”和“下一步”按鈕。 URL 的格式為

www.qwerty.com/###

其中### 是每次按下下一個按鈕時遞增的數字。 如何格式化規則,以免發生無限循環。

這是我的規則:

rules = (
        Rule(SgmlLinkExtractor(allow='http://not-a-real-site.com/trunk-framework/791'),follow=True,callback='parse_item',
    ),
)

不應該發生無限循環。 Scrapy 將過濾掉重復的網址。

是什么讓你認為程序會 go 進入無限循環,你是如何測試的? 如果 scrapy 之前已經下載過 url,則不會下載它。 您是否嘗試通過所有頁面 go,當您在最后一頁單擊下一步時會發生什么?

如果每次按下下一個鏈接時站點都會生成一個新數字,您可能會陷入無限循環。 盡管案例是站點代碼損壞,但您可以限制代碼中的最大頁面數,以避免無限循環。

您可以設置要關注的鏈接數量限制:使用DEPTH_LIMIT設置。

或者,您可以在解析回調 function 中檢查當前深度:

def parse(self, response):
    if response.meta['depth'] > 100:
        print 'Loop?'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM