您好,登錄后才能下訂單哦!
道友問我的一個問題,之前確實沒遇見過,在此記錄一下。
問題描述
在某網站主頁提取url進行迭代,爬蟲請求主頁時沒有問題,返回正常,但是在訪問在主頁提取到的url時出現了400狀態碼(400 Bad Request)。
結論
先貼出結論來,如果url里有空格的話,要把空格替換成%20,也就是url編碼,否則就會出現400。
解決過程
首先百度了一下400狀態碼什么意思:
400頁面是當用戶在打開網頁時,返回給用戶界面帶有400提示符的頁面。其含義是你訪問的頁面域名不存在或者請求錯誤。
主要有兩種形式:
1、bad request意思是“錯誤的請求”;
2、invalid hostname意思是”不存在的域名”。
所以說問題應該是出在了url上,我懷疑是他的url提取邏輯有問題,于是讓他把url打印一下看看,他說看不出什么問題。
然后我就把他代碼要了過來,自己調調試試,發現前幾個子url是訪問正常的,但是其中一個出現了400,那個url如下:
http://www.qichacha.com/company_getinfos?unique=4d5ad1bc15ddc4ad9873e5b0ff4f93d3&companyname=意大利C.D.VIDEO S.P.A.深圳代表處&tab=base
下面是一個訪問正常的url:
http://www.qichacha.com/company_getinfos?unique=f6aa78d2e9f4b0bc98103785f96c1353&companyname=深圳市聯得自動化裝備股份有限公司&tab=base
我首先把這個url復制到瀏覽器,發現可以正常訪問,然后就留神了一下瀏覽器上url的變化,發現空格變成了%20,在代碼里把url中的空格都替換成%20后,
程序訪問也正常了。
問題解決。
啟示
以后做爬蟲,對于不可預測的不規律的請求,在發請求之前先把url進行url編碼,以免出現這種錯誤。
這篇基于python 爬蟲爬到含空格的url的處理方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。