2012-06-15 102 views
0

我在scrapy中工作。在scrapy中抓取重定向的網址

我正在提取一個由url列表組成的網站。

所以我要求的主URL中start_url,我得到了所有的HREF標記列表中的鏈接(數據獲取),我再次要求每一個URL列表進一步用於讀取數據,但一些網址是否重定向象下面這樣:

Redirecting (301) to <GET example.com/sch/mobile-68745.php> from Redirecting (301) to <GET example.com/sch/mobile-8974.php> 

我才知道,scrapy忽略重定向的鏈接,但我要趕重定向的URL,並希望刮同樣喜歡用200個狀態

網址反正是有捕獲重定向url並從中獲取數據,我的意思是我們需要禁用重定向中間件嗎?或者我們需要在請求命令中使用任何元標記,你能給我一個例子嗎?

+3

>我才知道,scrapy忽略重定向的鏈接,但我要趕重定向的URL,並希望刮同樣喜歡用200個狀態的URL <這不是真的 - scrapy不會忽略重定向鏈接。當頁面的狀態爲301或者內容中滿足「元刷新」指令時,響應不會傳遞給回調函數,會顯示一條關於重定向的消息,同樣的回調函數會發出一個新的請求,但會有新的url。所以重定向的url不會被忽略,除非它來自另一個域或已經訪問過的url *(由中間件dupe過濾) – warvariuc

回答

0

我沒有使用Scrapy的經驗,但顯然,您可以定義中間件,它們改變了Scrapy在解析內容時的工作方式。

RedirectMiddleware支持和處理重定向的方塊,所以你需要做的就是啓用它。

DOWNLOADER_MIDDLEWARES = { 
    'apy.contrib.downloadermiddleware.redirect.RedirectMiddleware': 123, 
} 
+4

我認爲它默認啓用 –