Scrapy爬蟲錯誤日志匯總


1、數組越界問題(list index out of range)

原因:第1種可能情況:list[index]index超出范圍,也就是常說的數組越界。

   第2種可能情況:list是一個空的, 沒有一個元素,進行list[0]就會出現該錯誤,這在爬蟲問題中很常見,比如有個列表爬下來為空,統一處理就會報錯。

 

解決辦法:從你的網頁內容解析提取的代碼塊中找找看啦(人家比較習慣xpath + 正則),加油 ~

---------------------------------------------------華麗的分隔符------------------------------------------------------------

2、http狀態代碼沒有被處理或不允許(http status code is not handled or not allowed)

原因:第1種情況:就是你的http狀態碼沒有被識別,需要在settings.py中添加這個狀態碼信息,相當於C語言中的#define預處理宏定義命令吧

           第2種情況:403是網頁狀態碼,表示訪問拒絕或者禁止訪問。應該是你觸發到網站的反爬蟲機制了。

 

解決辦法:如果是第1種情況,在你的setting.py中,添這么一句短小精悍的話就OK了,緊接着就等着高潮吧您吶:HTTPERROR_ALLOWED_CODES = [403]

      如果是第2種情況,a.偽造報文頭部user-agent(網上有詳細教程不用多說)

               

                                          b.使用可用代理ip,如果你的代理不可用也會訪問不了

                                             

                                          c.是否需要帳戶登錄,使用cookielib模塊登錄帳戶操作
           如果以上方法還是不行,那么你的ip已被拉入黑名單靜止訪問了。等一段時間再操作。如果等等了還是不行的話:
                                          d.使用phatomjs或者selenium模塊試試。
           還不行使用別的scrapy爬蟲框架看看。
           以上都不行,說明這網站反爬機制做的很好,爬不了了,沒法了,不過我覺得很少有這種做得很好的網站

---------------------------------------------------華麗的分隔符------------------------------------------------------------

3、item限制問題(keyError: xxx does not support field :某某某)

 原因:第一種情況:item.py中所需字段沒有預先定義完整

    第二種情況:在scrapy中item存在的意義就是

                #可以通過直接看items.py,可以看出來要爬取那些字段

                #防止我們在item["鍵名"]  輸入鍵名的時候輸入錯誤

                                 但是有些時候,我們可能會發現,有些需要爬取的不確定的地段,例如下圖

4、丟包問題

現象:明明代碼跟視頻中的例子一樣,一運行卻出錯了,在不修改代碼的情況下重新運行一次卻又變好了,這是為什么?

  在網絡信息的傳輸中會出現偶然的丟包現象,有可能是你發送的請求服務器沒有收到,也有可能是服務器響應的信息不能完整送回來

  尤其是在網絡阻塞的時候,所以,在設計一個稱職的爬蟲時,需要考慮到這偶爾的丟包現象。

 

 

 

 解決辦法:

 

 

1 DOWNLOAD_FAIL_ON_DATALOSS = False 2 
3 if 'dataloss' in response.flags: 4 print('dataloss', response.url) 5 self.server.sadd(self.redis_key, response.url)

 

 

 

 

 

 

 

 

此篇文章持續更新,未完待續....

歡迎大家留下自己的問題,互相討論,互相學習,互相總結,,,,

 


免責聲明!

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



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