Python爬蟲入門:urllib.request.urlopen用法


 

urlopen簡介


urlopen是urllib.request模塊提供的最基本的構造HTTP請求的方法,可以模擬瀏覽器的一個請求發起過程,同時還支持授權驗證(authentication)、重定向(redirection)、瀏覽器Cookies以及其他內容。

使用方法為urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False,context=None)

 

 

基礎用法urlopen()
我們只指定url一個參數,如下面的:https://www.baidu.com。

默認使用GET方式對網站發起請求。

import urllib.request

response = urllib.request.urlopen('https://www.baidu.com')
print(response.read().decode('utf8'))

urlopen返回的response對象是http.client. HTTPResponse類型,主要包含read()、readinfo()、getheader(name)、getheaders()、fileno()等方法。

 

data參數
data參數是可選的,並且是字節流編碼格式(可以用urllib.parse.urlencode()和bytes()方法將參數轉化為字節流編碼格式的內容)。如果要使用data參數,則請求方式為POST

import urllib.parse
import urllib.request

data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read().decode('utf8'))

 

timeout參數

timeout參數用於設置超時,單位為秒,若不指定timeout,則使用全局默認時間。若請求超時,則會拋出urllib.error.URLError異常,可以通過try except處理異常。

import socket
import urllib.request
import urllib.error

try:
    response = urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)
except urllib.error.URLError as e:
    if isinstance(e.reason, socket.timeout):
        print('TIME OUT')

 

其他參數

context參數必須是ssl.SSLContent類型,用來指定設置SSL。
cafile和capath分別指定CA證書和它的路徑,在HTTPS中有用。
cadefault已經棄用,默認default。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM