回覆列表
  • 1 # IT老友

    http狀態碼:403,Forbidden。代表伺服器已經理解請求,但是拒絕執行它。通常是被伺服器反爬蟲了。

    請用谷歌瀏覽器按f12開啟開發人員工具,然後開啟要爬的網頁,檢查http頭資訊。

    1:headers需要偽裝正常的瀏覽器,請檢查各個http頭,比如把host、refer加上,有些網站會檢測;cookie往往是改變的,請測試是否需要加上以及是否合法改變。具體不同網頁不太一樣,原則上就是偽裝headers,以便讓伺服器認為是正常的瀏覽器。

    2:如果確認所有的http頭都是正確偽裝,那麼就是請求的頻率太快,被伺服器禁掉了ip或者賬戶,請更換ip或更換代理ip。

  • 2 # Bean蠶豆

    python爬蟲一直報錯,不知道是使用框架還是自己利用request寫的。個人的經驗是碰到錯誤,根據錯誤的提示做相應的修改,下面是我在做爬蟲是碰到的幾種錯誤,分享給大家。

    提取頁面資料時,數字越界之類的提醒

    在我們利用xpath提取資料的時候,時常會碰到越界的提示,這裡歸結為一句話是對頁面的html結構瞭解的不夠,對xpath的語法掌握的不夠。比如xpath("./a/text()")和xpath("/a/text()")表達的意思是不一樣的。

    頁面的問題,如果只是普通的頁面,你直接用url帶上相應的引數傳送請求,對方伺服器就可以響應

    我們經常碰到一個爬蟲爬某些頁面的時候正常工作,爬其它的頁面的時候頁面內容爬取不下來,為什麼?因為cookie,出於安全的考慮,現在的頁面都會在本地儲存一些cookie,在使用者下次訪問的時候直接根據cookie來判斷是否需要登入之類的。這個時候,需要我們也偽裝成之前登入過訪問過的樣子,因此,需要在正常的請求基礎上新增上一些頭部資訊之類的。

    robots.txt,爬蟲應該注意爬取網站的robots.txt檔案,那些域名是允許爬取的,那些域名下是不允許的

    在我們利用scrapy等爬蟲框架爬取的時候,要注意這些,預設情況下scrapy是嚴格遵守這些協議的。因此,需要我們在設定檔案裡將此項設定為false,這樣就可以不受robots的約束。

    當然,問題不止上面列舉的幾個問題,還有很多其它。總的來說,碰到了問題透過百度搜索都可以幫助我們解決掉,所以碰到問題多搜尋,搜尋後多看,多研究。問題自然 就會解決掉。關鍵是要用心去對待問題。

  • 3 # 雲飛學python

    爬蟲報錯,有好多可能,從一個新手角度來看,大致有以下幾條:

    1、ImportError 匯入模組/物件失敗

    這類錯誤往往是在匯入模組的時候報錯,比如匯入失敗或者沒有安裝對應的模組

    處理方式:安裝相應的模組,或者檢查語法是否輸入錯誤等等

    2、KeyError、NameError、SyntaxError、TabError、ValueError、IndentationError

    這類錯誤往往是比較麻煩的,我們來挨個解釋下:

    KeyError值錯誤,沒有對應的鍵值,比如取字典中不存在的值的時候,就會出現這個錯誤

    NameError變數名錯誤,這個錯誤一般出現在沒有定義或者沒有初始化變數,或者變數名字輸入錯誤

    SyntaxError語法錯誤,這個錯誤很明顯就是字面意思了

    TabError Tab和空格混用導致的錯誤、IndentationError縮排錯誤

    ValueError引數錯誤,傳入的引數值有問題,比如型別錯誤或者其他的

    以上錯誤往往是因為寫編碼的時候不夠細緻,或者一些不好的操作習慣導致。出現錯誤後只需要根據後面的提示去修正相應的程式碼即可!

    3、AttributeError物件沒有這個屬性、IndexError列表沒有相應的索引

    這2個錯誤為什麼單獨拿出來呢,是因為這是新手最常見的錯誤了,比如我們在做一個小爬蟲,用re或者其他方式匹配出結果後,需要對其進行進一步的操作比如分割,往往就忽略了一個問題,匹配出的結果是列表,或者精確的匹配一個內容,也忽略它本身還是一個列表,我們把它當成是一個字串來處理,就會報錯

    還有就是如果沒有匹配到相應的內容,會返回空列表,而這種情況有可能發生在程式碼已經寫到後面了,沒有相應的判斷語句去規避,結果就是返回的空列表,去取值,就會報IndexError錯誤了!

    當然還有其他的錯誤型別,比如上面幾位所說的,requests沒有返回我們要求的值、因為爬取的過快結果伺服器斷開連線等等,都會發生報錯!

  • 中秋節和大豐收的關聯?
  • 王者榮耀:后羿對比魯班七號遠端支援,誰才是第一?