1. 程式人生 > >Scrapy爬取頁面錯誤原因彙總

Scrapy爬取頁面錯誤原因彙總

錯誤原因彙總

1.網址錯誤
2.縮排問題
3.網頁有反爬蟲
反爬蟲解決方案:

  • 基本:請求頭user-agent
  • IP代理
  • 改機器人協議以及cookie
    ROBOTSTXT_OBEY = False
    COOKIES_ENABLED = False
  • 設定延遲
     DOWNLOAD_DELAY = 3
  • 在分段函式中所要爬取的url有反爬蟲
    解決方案:在請求的url後面新增標頭檔案如以下,標頭檔案可以從問題三的附錄中隨機取

url獲取出錯示例

url = response.selector.xpath(’//*[@class=‘lbf-pagination-item-list’]//li[9]/a/@href’).extract()[0]
print(url)
yield scrapy.Request(url, callback=self.parse)
如上圖程式碼,scrapy 爬蟲過程中,在實現翻頁時,偶然遇見如下報錯:
Missing scheme in request url:
百度許多同學總結了一下原因:
1.requests版本太低:
2.scrapy.Resquest(URL),url 應該是一個list…

但是實際問題並不是這些原因所致

經過反覆研究,發現 上圖程式碼中獲取的到 url 連結內部,用“;”替代了“&”。因此scrapy 不能識別 該網頁所致。
解決辦法:
1.改用URL 拼接而成的url list 做yield 呼叫self.parse
2.頁面本來可能純在一些問題。等待頁面更新,正常頁面連結不應該使用“;”(剛開始使用1方法實現了。後來,準備用原始程式碼記錄錯誤時,發現頁面已經更新為“&”,該報錯已經不純在)。

相關文件:

https://blog.csdn.net/weixin_41931602/article/details/80200695