再學爬蟲 urllib

2021-09-05 10:45:22 字數 4381 閱讀 3037

urllib是python內建的http請求庫,主要包括4個模組:request、error、parse、robotparser。

import urllib.request 

response = urllib.request.urlopen (』 ')

print(type(response))

#結果,返回乙個httpresponse物件

import urllib .request 

#構建請求物件

request有六個引數:其中origin_req_host 是請求方的host名稱或ip位址;unverifiable 表示這個請求是否是無法驗證的,預設是 false ;date必須是乙個位元組流型別的,可以傳乙個字典先用urlencode()將其轉為字串,再用bytes()進行編碼。

高階用法:

驗證:

from urllib.request import httppasswordmgrwithdefaultrealm, httpbasicauthhandler, build_opener 

print(e.reason)

這裡首先例項化httpbasicauthhandler 物件,其引數是 httppasswordmgrwithdefaultrealm 物件,

它利用 add_password()新增進去使用者名稱和密碼,這樣就建立了乙個處理驗證的 handler。再建立乙個opener,然後open()這個url。

**:

from urllib.error import urlerror 

from urllib.request import proxyhandler, build opener

proxy _handler = proxyhandler()

opener = build_opener(proxy_handler)

try:

response = opener.open (』 ')

print(response.read() .decode (』 utf-8'))

except urlerror as e:

print(e .reason)

cookies:
# 建立cookiejar物件

# 使用cookiejar物件建立handler

# 使用handler建立opener

opener = urllib.request.build_opener(handler)

# 獲取request物件

request = urllib.request.request(url=url, headers=headers)

# 請求資料

form_data = urllib.parse.urlencode(form_data).encode()

#用opener傳送請求

response = opener.open(request, form_data)

print(response.read().decode())

# 登入成功之後跳轉到個人中心

url = ""

response = opener.open(url)

print(response.read().decode())

詳細內容可以參考:python3網路爬蟲開發實戰,p110

from urllib import request, error 

try:

response = request. urlopen ')

except error. url error as e:

print(e.reason)

#我們開啟乙個不存在的頁面照理來說應該會報錯,但是這時我們捕獲了 url error 這個異常,執行結果如下:

not found

#程式沒有直接報錯,而是輸歸了如上內容,這樣通過如上操作,我們就可以避免程式異常終止,同時異常得到了有效處理

是urlerror的子類,專門處理http請求錯誤。有三個屬性:code、reason、headers。

#可以得到他的三個屬性

print(e.reason, e.code, e.headers, seq='\n 』)

不過想寫的完整、更好點一般都將兩種error結合在一起寫。

print(』 request successfully')要先寫子類再寫父類。

#執行結果如下:

fragment='comment ' )將url拆成六部分。

#這裡引數 data用列表型別 當然,你也可以用其 型別,比如元組或者特定的資料結構

#執行結果如下:

這樣我就成功實現了url的構造還有:urlsplit()、urlunsplit()、urljoin()、urlencode()、parse_qs()、parseqsl()、quote()、unquote()等。

詳細內容可以參考:python3網路爬蟲開發實戰,p114

這個模組一般用不太到。具體詳細內容可以參考:python3網路爬蟲開發實戰,p119

python爬蟲(urllib簡介)

通過url開啟任意資源,官方鏈結 urllib模組提供乙個高階介面,可以在通過url在網上獲取資料。其中,urlopen 函式類似於內建函式open 但接受的是url不是檔名。只能開啟用於讀取的url,不能任何查詢操作。urllib.urlopen url data prpxies context ...

爬蟲之urllib庫

一 urllib的基本使用 import urllib.request response urllib.request.urlopen 獲取當前爬取網頁的狀態碼 print response.getcode decode 解碼 位元組資料轉成字串資料 data response.read decod...

爬蟲基礎 urllib庫

使用 urllib 匯入必要模組 from urllib import request 如果需要 url轉碼 from urllib import parse print parse.quote 范冰冰 e8 8c 83 e5 86 b0 e5 86 b0 urlopen url rsp reque...