scrapy下載圖片報[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:錯誤


本文轉自:http://blog.csdn.net/zzk1995/article/details/51628205

 

先說結論,關閉scrapy自帶的ROBOTSTXT_OBEY功能,在setting找到這個變量,設置為False即可解決。
使用scrapy爬取淘寶頁面的時候,在提交http請求時出現debug信息Forbidden by robots.txt,看來是請求被拒絕了。開始因為是淘寶頁面有什么保密機制,防止爬蟲來抓取頁面,於是在spider中填入各種header信息,偽裝成瀏覽器,結果還是不行。。。用chrome抓包看了半天感覺沒有影響簡單頁面抓取的機制(其他保密機制應該還是有的,打開一個頁面時,向不同服務器遞交了很多請求,還設定了一些不知道干啥的cookies),最后用urllib偽造請求發現頁面都能抓取回來。於是上網查了一下robot.txt是什么,發現原來有個robot協議,終於恍然大悟:
我們觀察scrapy抓包時的輸出就能發現,在請求我們設定的url之前,它會先向服務器根目錄請求一個txt文件:

2016-06-10 18:16:26 [scrapy] DEBUG: Crawled (200) <GET https://item.taobao.com/robots.txt> (referer: None) 
  • 1
  • 2

這個文件中規定了本站點允許的爬蟲機器爬取的范圍(比如你不想讓百度爬取你的頁面,就可以通過robot來限制),因為默認scrapy遵守robot協議,所以會先請求這個文件查看自己的權限,而我們現在訪問這個url得到

User-agent: * Disallow: /
  • 1
  • 2

可以看見,淘寶disallow根目錄以下所有頁面。。。。(似乎有新聞說淘寶關閉了爬蟲對它們的爬取權限,因為涉及到用戶隱私)所以scrapy就停止了之后的請求和頁面解析。
我們在setting改變ROBOTSTXT_OBEY為False,讓scrapy不要遵守robot協議,之后就能正常爬取了。

2016-06-10 18:27:38 [scrapy] INFO: Spider opened 2016-06-10 18:27:38 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2016-06-10 18:27:38 [scrapy] DEBUG: Crawled (200) <GET https://item.taobao.com/xxxxxxx> (referer: None) 
  • 1
  • 2
  • 3
  • 4

對於使用robot協議的站點,只需要我們的爬蟲不遵守該協議,就可以了,但是對於防止爬蟲爬取,站點還有檢查請求頭、檢查ip等等手段,還需要其他的相應處理。

 

本文來源:http://blog.csdn.net/zzk1995/article/details/51628205


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM