中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲進階之如何使用urllib庫

發布時間:2021-05-05 19:42:04 來源:億速云 閱讀:178 作者:小新 欄目:編程語言

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

python的數據類型有哪些?

python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。

python爬蟲因其效率高開發迅速的優勢受到廣大程序員的青睞,python爬蟲的使用依賴于本身各種庫的功能,其中urllib庫是python中的一個http請求庫,含有四個模塊,有著不同的功能,使用方法也有很多,本文向大家介紹urllib庫的四個模塊和四種使用方法:1、獲取某個網站的方式;2、超時處理;3、簡單解析-響應頭;4、將爬蟲偽裝成服務器發出請求。

一、urllib庫是什么?

urllib是python中的一個http請求庫,借助urllib,我們可以向瀏覽器發出請求,只需向urllib庫中的方法傳入url和一些參數即可。

urllib庫中包含以下模塊:

1、urllib.request

http請求模塊,用于模擬向瀏覽器發出請求的過程;

2、urllib.error

異常處理模塊,當利用urllib.request模擬向瀏覽器發出請求時,如果出現請求錯誤,可以利用此模塊捕獲異常信息,然后進行重試或其他操作,以保證程序不會意外終止;

3、urllib.parse

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

4、urllib.robotparser

robots.txt解析模塊,主要用于識別網站的robots.txt文件,判斷哪些網站可以爬,那些網站不可爬。此模塊不太經常被使用。

二、Python爬蟲中常用的urllib方法

首先需要導入urllib模塊,如下

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

1、獲取某個網站的方式

(1)獲取一個get請求

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

(2)獲取pose請求

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

采用post訪問時需要傳遞表單信息,通過表單的封裝才能訪問post,代碼中bytes將信息轉換為二進制包。

當需要模擬瀏覽器發出請求時,必須用post形式來封裝數據(用data封裝),否則有405報錯。

2、超時處理

當要訪問的服務器排斥爬蟲,或鏈接是死鏈接、網絡不好等情況出現時,頁面在一定的時間內會沒有反應,這時可以設置一個時間限制,避免一直等待。

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

若訪問超時會出現如下報錯,可以利用異常處理結束循環或者停止爬取該網頁,向其他網頁發送get請求。

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、簡單解析-響應頭

網絡爬蟲有時會返回一些錯誤信息,此時我們可以返回響應狀態碼來大致判斷報錯類型。

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

常見的狀態碼如418報錯是因為訪問的服務器發現該請求是一個爬蟲,也即爬蟲時常見的反爬機制,此時可改用requests庫、添加header信息等方法解決。

4、將爬蟲偽裝成服務器發出請求

# 訪問反爬的網址
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是請求對象而非響應對象
response = urllib.request.urlopen(req)
html = response.read().decode("utf-8")
print(html)

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

user-agent的作用是告訴所訪問的服務器,我們是何種類型的機器(瀏覽器),若只用User-Agent會返回百度驗證界面,可加入Cookie返回所要爬取的結果頁面

三、爬蟲頻率過快導致失敗

現在很多網站對異常用戶訪問網站頻次過高設置了安全訪問機制。在這個時候,如果你想繼續訪問這個網站,HTTP代理ip非常重要。當前ip地址有限,可以更改新的ip地址,保證爬蟲的順利進行。

推薦使用優質的代理ip資源,保證爬蟲程序的順利進行。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python爬蟲進階之如何使用urllib庫”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大同市| 新晃| 新余市| 襄汾县| 绥中县| 芜湖县| 汤阴县| 浮梁县| 南丰县| 宁城县| 镇坪县| 泰宁县| 塔河县| 广东省| 涞水县| 浦城县| 平南县| 青川县| 库尔勒市| 肥西县| 炉霍县| 芷江| 肃宁县| 苏尼特右旗| 中山市| 栖霞市| 从化市| 阜南县| 额尔古纳市| 亳州市| 杭锦后旗| 象山县| 永济市| 香河县| 加查县| 南丹县| 金寨县| 大姚县| 樟树市| 高台县| 莱州市|