真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python爬蟲(chóng)進(jìn)階之如何使用urllib庫(kù)

這篇文章主要介紹了Python爬蟲(chóng)進(jìn)階之如何使用urllib庫(kù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為瑯琊企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),瑯琊網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

python的數(shù)據(jù)類(lèi)型有哪些?

python的數(shù)據(jù)類(lèi)型:1. 數(shù)字類(lèi)型,包括int(整型)、long(長(zhǎng)整型)和float(浮點(diǎn)型)。2.字符串,分別是str類(lèi)型和unicode類(lèi)型。3.布爾型,Python布爾類(lèi)型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類(lèi)型,集合中可以放任何數(shù)據(jù)類(lèi)型。5. 元組,元組用”()”標(biāo)識(shí),內(nèi)部元素用逗號(hào)隔開(kāi)。6. 字典,字典是一種鍵值對(duì)的集合。7. 集合,集合是一個(gè)無(wú)序的、不重復(fù)的數(shù)據(jù)組合。

python爬蟲(chóng)因其效率高開(kāi)發(fā)迅速的優(yōu)勢(shì)受到廣大程序員的青睞,python爬蟲(chóng)的使用依賴于本身各種庫(kù)的功能,其中urllib庫(kù)是python中的一個(gè)http請(qǐng)求庫(kù),含有四個(gè)模塊,有著不同的功能,使用方法也有很多,本文向大家介紹urllib庫(kù)的四個(gè)模塊和四種使用方法:1、獲取某個(gè)網(wǎng)站的方式;2、超時(shí)處理;3、簡(jiǎn)單解析-響應(yīng)頭;4、將爬蟲(chóng)偽裝成服務(wù)器發(fā)出請(qǐng)求。

一、urllib庫(kù)是什么?

urllib是python中的一個(gè)http請(qǐng)求庫(kù),借助urllib,我們可以向?yàn)g覽器發(fā)出請(qǐng)求,只需向urllib庫(kù)中的方法傳入url和一些參數(shù)即可。

urllib庫(kù)中包含以下模塊:

1、urllib.request

http請(qǐng)求模塊,用于模擬向?yàn)g覽器發(fā)出請(qǐng)求的過(guò)程;

2、urllib.error

異常處理模塊,當(dāng)利用urllib.request模擬向?yàn)g覽器發(fā)出請(qǐng)求時(shí),如果出現(xiàn)請(qǐng)求錯(cuò)誤,可以利用此模塊捕獲異常信息,然后進(jìn)行重試或其他操作,以保證程序不會(huì)意外終止;

3、urllib.parse

包含了針對(duì)url的許多處理方法,如url拆分、url解析、url合并等;

4、urllib.robotparser

robots.txt解析模塊,主要用于識(shí)別網(wǎng)站的robots.txt文件,判斷哪些網(wǎng)站可以爬,那些網(wǎng)站不可爬。此模塊不太經(jīng)常被使用。

二、Python爬蟲(chóng)中常用的urllib方法

首先需要導(dǎo)入urllib模塊,如下

import urllib.request
import urllib.parse  # 解析器,將鍵值對(duì)按utf-8或其他形式解析

1、獲取某個(gè)網(wǎng)站的方式

(1)獲取一個(gè)get請(qǐng)求

response = urllib.request.urlopen("http://www.baidu.com")
print(response.read().decode("utf-8"))   
# 第二行的輸出是對(duì)獲取到的對(duì)象response的信息-網(wǎng)頁(yè)源碼進(jìn)行utf-8的解碼

(2)獲取pose請(qǐng)求

data = bytes(urllib.parse.urlencode({"hello": "world"}), encoding='utf-8')  
# 一般模擬用戶登錄時(shí)使用此種方式,在{}內(nèi)加上cookie內(nèi)容
response = urllib.request.urlopen("https://baidu.com", data=data)
print(response.read().decode("utf-8"))

采用post訪問(wèn)時(shí)需要傳遞表單信息,通過(guò)表單的封裝才能訪問(wèn)post,代碼中bytes將信息轉(zhuǎn)換為二進(jìn)制包。

當(dāng)需要模擬瀏覽器發(fā)出請(qǐng)求時(shí),必須用post形式來(lái)封裝數(shù)據(jù)(用data封裝),否則有405報(bào)錯(cuò)。

2、超時(shí)處理

當(dāng)要訪問(wèn)的服務(wù)器排斥爬蟲(chóng),或鏈接是死鏈接、網(wǎng)絡(luò)不好等情況出現(xiàn)時(shí),頁(yè)面在一定的時(shí)間內(nèi)會(huì)沒(méi)有反應(yīng),這時(shí)可以設(shè)置一個(gè)時(shí)間限制,避免一直等待。

response = urllib.request.urlopen("https://baidu.com", timeout=0.1)
print(response.read().decode("utf-8"))

若訪問(wèn)超時(shí)會(huì)出現(xiàn)如下報(bào)錯(cuò),可以利用異常處理結(jié)束循環(huán)或者停止爬取該網(wǎng)頁(yè),向其他網(wǎng)頁(yè)發(fā)送get請(qǐng)求。

try:
    response = urllib.request.urlopen("http://www.baidu.com",timeout=0.1)
    print(response.read().decode("utf-8"))
except urllib.error.URLError as e:
    print("time out!")

3、簡(jiǎn)單解析-響應(yīng)頭

網(wǎng)絡(luò)爬蟲(chóng)有時(shí)會(huì)返回一些錯(cuò)誤信息,此時(shí)我們可以返回響應(yīng)狀態(tài)碼來(lái)大致判斷報(bào)錯(cuò)類(lèi)型。

response = urllib.request.urlopen("http://www.baidu.com")
print(response.status)   # 返回狀態(tài)碼-200、404、418等
print(response.getheaders())  # 返回頭部所有信息

常見(jiàn)的狀態(tài)碼如418報(bào)錯(cuò)是因?yàn)樵L問(wèn)的服務(wù)器發(fā)現(xiàn)該請(qǐng)求是一個(gè)爬蟲(chóng),也即爬蟲(chóng)時(shí)常見(jiàn)的反爬機(jī)制,此時(shí)可改用requests庫(kù)、添加header信息等方法解決。

4、將爬蟲(chóng)偽裝成服務(wù)器發(fā)出請(qǐng)求

# 訪問(wèn)反爬的網(wǎng)址
url = "http://www.douban.com"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/83.0.4103.61 Safari/537.36"
}
req = urllib.request.Request(url=url, headers=headers, method="POST")  # req是請(qǐng)求對(duì)象而非響應(yīng)對(duì)象
response = urllib.request.urlopen(req)
html = response.read().decode("utf-8")
print(html)

代碼中的headers來(lái)自瀏覽器頁(yè)面,在chrome中進(jìn)入想訪問(wèn)的瀏覽頁(yè)面,點(diǎn)擊F12或右鍵檢查-Network中,即可查到User-Agent信息,粘貼到代碼中(需注意大小寫(xiě)及空格,代碼中的格式要和瀏覽器信息一致)。

user-agent的作用是告訴所訪問(wèn)的服務(wù)器,我們是何種類(lèi)型的機(jī)器(瀏覽器),若只用User-Agent會(huì)返回百度驗(yàn)證界面,可加入Cookie返回所要爬取的結(jié)果頁(yè)面

三、爬蟲(chóng)頻率過(guò)快導(dǎo)致失敗

現(xiàn)在很多網(wǎng)站對(duì)異常用戶訪問(wèn)網(wǎng)站頻次過(guò)高設(shè)置了安全訪問(wèn)機(jī)制。在這個(gè)時(shí)候,如果你想繼續(xù)訪問(wèn)這個(gè)網(wǎng)站,HTTP代理ip非常重要。當(dāng)前ip地址有限,可以更改新的ip地址,保證爬蟲(chóng)的順利進(jìn)行。

推薦使用優(yōu)質(zhì)的代理ip資源,保證爬蟲(chóng)程序的順利進(jìn)行。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python爬蟲(chóng)進(jìn)階之如何使用urllib庫(kù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


新聞名稱:Python爬蟲(chóng)進(jìn)階之如何使用urllib庫(kù)
網(wǎng)頁(yè)地址:http://weahome.cn/article/jshscc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部