【Scrapy】scrapy爬蟲出現Forbidden by robots.txt

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

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等等手段,還須要其餘的相應處理。cookie

相關文章
相關標籤/搜索