基于python 爬蟲爬到含空格的url的處理方法
道友問我的一個問題,之前確實(shí)沒遇見過,在此記錄一下。
問題描述
在某網(wǎng)站主頁提取url進(jìn)行迭代,爬蟲請求主頁時沒有問題,返回正常,但是在訪問在主頁提取到的url時出現(xiàn)了400狀態(tài)碼(400 Bad Request)。
結(jié)論
先貼出結(jié)論來,如果url里有空格的話,要把空格替換成%20,也就是url編碼,否則就會出現(xiàn)400。
解決過程
首先百度了一下400狀態(tài)碼什么意思:
400頁面是當(dāng)用戶在打開網(wǎng)頁時,返回給用戶界面帶有400提示符的頁面。其含義是你訪問的頁面域名不存在或者請求錯誤。
主要有兩種形式:
1、bad request意思是“錯誤的請求”;
2、invalid hostname意思是”不存在的域名”。
所以說問題應(yīng)該是出在了url上,我懷疑是他的url提取邏輯有問題,于是讓他把url打印一下看看,他說看不出什么問題。
然后我就把他代碼要了過來,自己調(diào)調(diào)試試,發(fā)現(xiàn)前幾個子url是訪問正常的,但是其中一個出現(xiàn)了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=深圳市聯(lián)得自動化裝備股份有限公司&tab=base
我首先把這個url復(fù)制到瀏覽器,發(fā)現(xiàn)可以正常訪問,然后就留神了一下瀏覽器上url的變化,發(fā)現(xiàn)空格變成了%20,在代碼里把url中的空格都替換成%20后,
程序訪問也正常了。
問題解決。
啟示
以后做爬蟲,對于不可預(yù)測的不規(guī)律的請求,在發(fā)請求之前先把url進(jìn)行url編碼,以免出現(xiàn)這種錯誤。
這篇基于python 爬蟲爬到含空格的url的處理方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
django框架cookie和session用法實(shí)例詳解
這篇文章主要介紹了django框架cookie和session用法,結(jié)合實(shí)例形式詳細(xì)分析了Django框架cookie和session的功能、原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2019-12-12Python使用conda如何安裝requirement.txt的擴(kuò)展包
這篇文章主要介紹了Python使用conda如何安裝requirement.txt的擴(kuò)展包問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02使用tensorflow 實(shí)現(xiàn)反向傳播求導(dǎo)
這篇文章主要介紹了使用tensorflow 實(shí)現(xiàn)反向傳播求導(dǎo),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05Pandas.DataFrame轉(zhuǎn)置的實(shí)現(xiàn)
這篇文章主要介紹了Pandas.DataFrame轉(zhuǎn)置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python中json格式數(shù)據(jù)的編碼與解碼方法詳解
這篇文章主要介紹了Python中json格式數(shù)據(jù)的編碼與解碼方法,詳細(xì)分析了Python針對json格式數(shù)據(jù)的編碼轉(zhuǎn)換操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-07-07Python從列表推導(dǎo)到zip()函數(shù)的5種技巧總結(jié)
在本篇文章里小編給大家整理的是關(guān)于Python從列表推導(dǎo)到zip()函數(shù)的5種技巧的相關(guān)知識點(diǎn)和代碼,需要的朋友們參考學(xué)習(xí)下。2019-10-10python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁自動操作過程
這篇文章主要介紹了python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁自動操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11獨(dú)立進(jìn)程使用django模型及django.setup()使用
這篇文章主要介紹了獨(dú)立進(jìn)程使用django模型(django.setup()使用),它提供了一種簡單且高效的方式來利用Django強(qiáng)大的功能,并使你的代碼更易于維護(hù)和擴(kuò)展,需要的朋友可以參考下2023-07-07