Python爬蟲進階之urllib庫使用方法
因其效率高開發迅速的優勢受到廣大程式設計師的青睞,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("") 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("", data=data) print(response.read().decode("utf-8"))
採用post訪問時需要傳遞表單資訊,透過表單的封裝才能訪問post,程式碼中bytes將資訊轉換為二進位制包。
當需要模擬瀏覽器發出請求時,必須用post形式來封裝資料(用data封裝),否則有405報錯。
2、超時處理
當要訪問的伺服器排斥爬蟲,或連結是死連結、網路不好等情況出現時,頁面在一定的時間內會沒有反應,這時可以設定一個時間限制,避免一直等待。
response = urllib.request.urlopen("", timeout=0.1) print(response.read().decode("utf-8"))
若訪問超時會出現如下報錯,可以利用異常處理結束迴圈或者停止爬取該網頁,向其他網頁傳送get請求。
try: response = urllib.request.urlopen("",timeout=0.1) print(response.read().decode("utf-8")) except urllib.error.URLError as e: print("time out!")
3、簡單解析-響應頭
網路爬蟲有時會返回一些錯誤資訊,此時我們可以返回響應狀態碼來大致判斷報錯型別。
response = urllib.request.urlopen("") print(response.status) # 返回狀態碼-200、404、418等 print(response.getheaders()) # 返回頭部所有資訊
常見的狀態碼如418報錯是因為訪問的伺服器發現該請求是一個爬蟲,也即爬蟲時常見的反爬機制,此時可改用、新增header資訊等方法解決。
4、將爬蟲偽裝成伺服器發出請求
# 訪問反爬的網址 url = "" 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庫使用方法一部分,還有很多使用方法,大家可以探索一下哦~更多python爬蟲學習推薦:。
(推薦作業系統:windows7系統、Python 3.9.1,DELL G3電腦。)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2459/viewspace-2831020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python爬蟲常用庫之urllib詳解Python爬蟲
- python爬蟲基礎之urllibPython爬蟲
- Python爬蟲進階之APP逆向(三)Python爬蟲APP
- python爬蟲進階必備之代理Python爬蟲
- Python爬蟲進階之JS逆向入門Python爬蟲JS
- Python爬蟲進階之會話和CookiesPython爬蟲會話Cookie
- 爬蟲中網路請求的那些事之urllib庫爬蟲
- Python爬蟲之BeautifulSoup庫Python爬蟲
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- Python爬蟲進階之JS逆向土地市場網!Python爬蟲JS
- Python爬蟲進階之代理的基本原理Python爬蟲
- 爬蟲進階:反反爬蟲技巧爬蟲
- Python 爬蟲十六式 - 第二式: urllib 與 urllib3Python爬蟲
- JB的Python之旅-爬蟲篇--urllib和Beautiful SoupPython爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- 爬蟲-urllib模組的使用爬蟲
- 爬蟲基本原理及urllib庫的基本使用爬蟲
- Python 爬蟲進階篇-利用beautifulsoup庫爬取網頁文章內容實戰演示Python爬蟲網頁
- Python爬蟲之Selenium庫的基本使用Python爬蟲
- Python爬蟲之selenium庫使用詳解Python爬蟲
- python爬蟲常用庫之requests詳解Python爬蟲
- python爬蟲常用庫之BeautifulSoup詳解Python爬蟲
- Python 爬蟲從入門到進階之路(十)Python爬蟲
- Python 爬蟲從入門到進階之路(十五)Python爬蟲
- Python 爬蟲從入門到進階之路(九)Python爬蟲
- Python 爬蟲從入門到進階之路(十二)Python爬蟲
- Python 爬蟲從入門到進階之路(十七)Python爬蟲
- Python 爬蟲從入門到進階之路(二)Python爬蟲
- Python 爬蟲從入門到進階之路(十一)Python爬蟲
- Python 爬蟲從入門到進階之路(六)Python爬蟲
- Python 爬蟲從入門到進階之路(八)Python爬蟲
- Python 爬蟲從入門到進階之路(七)Python爬蟲
- Python 爬蟲從入門到進階之路(十八)Python爬蟲
- Python 爬蟲從入門到進階之路(十六)Python爬蟲
- Python 爬蟲從入門到進階之路(三)Python爬蟲
- 爬蟲之requests庫爬蟲
- 爬蟲進階之去哪兒酒店(國內外)爬蟲
- Python爬蟲之BeautifulSoupPython爬蟲