2017-08-15 153 views
-1

跳到下一個我喜歡寫BFO寬履帶,其執行以下操作:Scrapy:停止爬行一個域,如果條件滿足

  • 開始第一URL
  • 試圖找到鏈接到Impressum RegEx: '.*mpressum.*'(翻譯:印記)
  • 檢查是否符合某些條件。在我的情況下,如果郵政編碼在一定範圍內
  • 如果滿足條件繼續爬行頁面
  • 如果不符合條件,請停止對該域進行爬網以將其從未來爬網列入黑名單。
  • 與未來域繼續

我怎樣才能實現Scrapy這種行爲?

基本上我這樣做是因爲我想回答以下問題:
德國的哪些域名在某個郵政編碼範圍內?

我的代碼很混亂,因爲我現在正在學習Scrapy。

+0

我固定格式錯誤和擴展的問題。 – zx485

+0

即使你的代碼是一團糟 - 通過編輯分享給我們的問題將是有益的。 – zx485

回答

0

首先建立在你的蜘蛛變量blocked_domains

然後開始填充blocked_domains與您不想在抓取過程中抓取的域。

創建一個download middleware

和內部

def process_request(self, request, spider): 

    domain = request.url # extract domain of url from request.url 
    if domain in spider.blocked_domains: 
      return None # do not process request. 
    else: 
      return request # process request 
+0

我做過了,但是我沒有明白,現在它什麼也沒做。 你可以發佈最小的可運行代碼嗎? – amthenia

+0

您是否創建了中間件?你是否啓用它?請發佈您的完整項目代碼,我會很樂意幫助你。 – Umair

+0

這也是我的第一個Python代碼。我的想法可能不那麼令人困惑。之後我發佈我的代碼。與中間件的部分是必不可少的,我寫的東西有點微不足道。 – amthenia