基于python 爬蟲爬到含空格的url的處理方法
道友問我的一個(gè)問題,之前確實(shí)沒遇見過(guò),在此記錄一下。
問題描述
在某網(wǎng)站主頁(yè)提取url進(jìn)行迭代,爬蟲請(qǐng)求主頁(yè)時(shí)沒有問題,返回正常,但是在訪問在主頁(yè)提取到的url時(shí)出現(xiàn)了400狀態(tài)碼(400 Bad Request)。
結(jié)論
先貼出結(jié)論來(lái),如果url里有空格的話,要把空格替換成%20,也就是url編碼,否則就會(huì)出現(xiàn)400。
解決過(guò)程
首先百度了一下400狀態(tài)碼什么意思:
400頁(yè)面是當(dāng)用戶在打開網(wǎng)頁(yè)時(shí),返回給用戶界面帶有400提示符的頁(yè)面。其含義是你訪問的頁(yè)面域名不存在或者請(qǐng)求錯(cuò)誤。
主要有兩種形式:
1、bad request意思是“錯(cuò)誤的請(qǐng)求”;
2、invalid hostname意思是”不存在的域名”。
所以說(shuō)問題應(yīng)該是出在了url上,我懷疑是他的url提取邏輯有問題,于是讓他把url打印一下看看,他說(shuō)看不出什么問題。
然后我就把他代碼要了過(guò)來(lái),自己調(diào)調(diào)試試,發(fā)現(xiàn)前幾個(gè)子url是訪問正常的,但是其中一個(gè)出現(xiàn)了400,那個(gè)url如下:
http://www.qichacha.com/company_getinfos?unique=4d5ad1bc15ddc4ad9873e5b0ff4f93d3&companyname=意大利C.D.VIDEO S.P.A.深圳代表處&tab=base
下面是一個(gè)訪問正常的url:
http://www.qichacha.com/company_getinfos?unique=f6aa78d2e9f4b0bc98103785f96c1353&companyname=深圳市聯(lián)得自動(dòng)化裝備股份有限公司&tab=base
我首先把這個(gè)url復(fù)制到瀏覽器,發(fā)現(xiàn)可以正常訪問,然后就留神了一下瀏覽器上url的變化,發(fā)現(xiàn)空格變成了%20,在代碼里把url中的空格都替換成%20后,
程序訪問也正常了。
問題解決。
啟示
以后做爬蟲,對(duì)于不可預(yù)測(cè)的不規(guī)律的請(qǐng)求,在發(fā)請(qǐng)求之前先把url進(jìn)行url編碼,以免出現(xiàn)這種錯(cuò)誤。
這篇基于python 爬蟲爬到含空格的url的處理方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python xlwt如何設(shè)置單元格的自定義背景顏色
這篇文章主要介紹了python xlwt如何設(shè)置單元格的自定義背景顏色,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
解決Python訪問MySQL數(shù)據(jù)庫(kù)速度慢的問題
這篇文章主要介紹了解決Python訪問MySQL數(shù)據(jù)庫(kù)速度慢的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
Python搭建代理IP池實(shí)現(xiàn)接口設(shè)置與整體調(diào)度
這篇文章主要介紹了Python搭建代理IP池實(shí)現(xiàn)接口設(shè)置與整體調(diào)度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
python自動(dòng)化腳本安裝指定版本python環(huán)境詳解
這篇文章主要為大家詳細(xì)介紹了python自動(dòng)化腳本安裝指定版本python環(huán)境的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Python?Flask中Cookie和Session區(qū)別詳解
Flask是一個(gè)使用?Python?編寫的輕量級(jí)?Web?應(yīng)用框架。其?WSGI?工具箱采用?Werkzeug?,模板引擎則使用?Jinja2?。Flask使用?BSD?授權(quán)。Flask也被稱為?“microframework”?,因?yàn)樗褂煤?jiǎn)單的核心,用?extension?增加其他功能,F(xiàn)lask中Cookie和Session有什么區(qū)別呢2022-07-07

