2012-09-19 90 views
0

我想包括我scrapy items.py文件的響應字段,如下所示:存儲重定向在Scrapy項目

class ScrapyItem(Item): 
    title = Field() 
    h1 = Field() 
    response = Field() 

我想我可能只是在我的spider.py文件中使用response.status,但是這給了我一個200狀態代碼每次。如果頁面被重定向或未找到,我希望它填寫301,302404

在Scrapy中有沒有辦法做到這一點?

+0

如果頁面未加載,則不會有任何項目。你需要的只是一個具有響應代碼的網址列表嗎? – Leo

+0

我需要響應代碼以及頁面上的html元素。我使用parse_item方法加載和解析頁面,並通過調用response.status來獲取響應代碼。這每次都會返回200個代碼,沒有重定向或404s – zcoke

+0

404的html很可能是「Page not found」頁面,沒有任何項目可以解析。大多數情況下,302和301響應根本沒有任何html。關鍵是,在這些頁面上沒有任何東西需要解析。 如果您嘗試構建簡單的網站地圖(鏈接 - 響應代碼),scrapy不是最好的或最簡單的工具。 – Leo

回答

0

Scrapy吞下那種東西給你(這是一個設計決定)。你需要做兩件事情:

  1. 在你的蜘蛛,編寫以下以handle error responses

    handle_httpstatus_list = range(400, 427) + range(500, 511)

  2. 禁用處理3xx狀態標題

現在RedirectMiddleware您可以從response.status字段讀取狀態。