2015-06-19 82 views
0

我是Scrapy框架&的新用戶,目前正在使用它從多個「Health & Wellness」網站中提取文章。對於某些請求,scrapy會重定向到主頁(在瀏覽器中不會出現此行爲)。下面是一個例子:Scrapy重定向到某個網址的主頁

命令: scrapy殼 「http://www.bornfitness.com/blog/page/10/」 結果: 2015年6月19日21:32:15 + 0530 [scrapy] DEBUG:Web服務偵聽127.0.0.1:6080 2015 - 06-19 21:32:15 + 0530 [默認]信息:蜘蛛打開 2015-06-19 21:32:15 + 0530 [默認]調試:重定向(301)到http://www.bornfitness.com/ > from http://www.bornfitness.com/blog/page/10/> 2015-06-19 21:32:16 + 0530 [default] DEBUG:Crawled(200)http://www.bornfitness.com />(referer:None)

請注意url(10)中的頁碼是一個兩位數的數字。我沒有看到這個問題與單頁面頁碼(例如8)的網址。 結果: 2015-06-19 21:43:15 + 0530 [默認] INFO:蜘蛛打開 2015-06-19 21:43:16 + 0530 [default] DEBUG:Crawled(200)http:// www (引用者:無)

+0

您是否獲得了200次成功加載頁面的200次_before_?即 - 第8頁是否將您重定向到第8頁? – tegancp

回答

0

當您在使用scrapy複製瀏覽器行爲時遇到困難時,通常需要查看當瀏覽器處於不同狀態時傳遞的內容是什麼與網站談話的時候相比,當你的蜘蛛在與網站交談時。請記住,一個網站(幾乎總是)不是爲了對網絡爬蟲很好,而是爲了與網絡瀏覽器交互。

對於你的情況,如果你看一下被你scrapy請求一起發送,你應該看到類似:

In [1]: request.headers 
Out[1]: 
{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
'Accept-Encoding': 'gzip,deflate', 
'Accept-Language': 'en', 
'User-Agent': 'Scrapy/0.24.6 (+http://scrapy.org)'} 

如果檢查由請求對同一發送通過Web瀏覽器頁面,你可能會看到這樣的:

**Request Headers** 

GET /blog/page/10/ HTTP/1.1  
Host: www.bornfitness.com  
Connection: keep-alive  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36 
DNT: 1  
Referer: http://www.bornfitness.com/blog/page/11/ 
Accept-Encoding: gzip, deflate, sdch  
Accept-Language: en-US,en;q=0.8 
Cookie: fealty_segment_registeronce=1; ... ... ... 

嘗試改變User-Agent在您的要求。這應該允許你避開重定向。

+0

謝謝,將USER_AGENT從默認的'Scrapy/0.24.6(+ http://scrapy.org)'更改爲'born_fitness'(或任何其他)可以解決問題。任何想法爲什麼這隻發生在一些網址(/ page/10 /但不是/ page/8 /),爲什麼只爲USER_AGENT'Scrapy/0.24.6(+ http://scrapy.org)'? – Aditya