十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹python安裝urllib的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出伍家崗免費(fèi)做網(wǎng)站回饋大家。
urllib是Python中請求url連接的官方標(biāo)準(zhǔn)庫,在Python2中主要為urllib和urllib2,在Python3中整合成了urllib?;旧虾w了基礎(chǔ)的網(wǎng)絡(luò)請求功能。
該庫有四個(gè)模塊,分別是urllib.request,urllib.error,urllib.parse,urllib.robotparser。前三個(gè)比較常用。
urllib.request 發(fā)送http請求
urllib.error 處理請求過程中,出現(xiàn)的異常。
urllib.parse 解析url
urllib.robotparser 解析robots.txt 文件
二、請求方式
1、get請求
#第一步導(dǎo)包 from urllib import request url = "http://httpbin.org" #第二步請求 response = request.urlopen(url,timeout=1) #第三步打印返回?cái)?shù)據(jù) print(response.read().decode())
訪問的結(jié)果會(huì)是一個(gè)http.client.HTTPResponse對象,使用此對象的read()方法,則可以獲取訪問網(wǎng)頁獲得的數(shù)據(jù)。但是要注意的是,獲得的數(shù)據(jù)會(huì)是bytes的二進(jìn)制格式,所以需要decode()一下,轉(zhuǎn)換成字符串格式。
urllib發(fā)送請求是用urlopen()
源碼如下
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
第一個(gè)參數(shù) String 類型的地址
data 是 bytes 類型的內(nèi)容,可通過 bytes()函數(shù)或者encode()轉(zhuǎn)為化字節(jié)流。它也是可選參數(shù)。使用 data 參數(shù),請求方式變成以 POST 方式提交表單。使用標(biāo)準(zhǔn)格式是application/x-www-form-urlencoded
timeout 參數(shù)是用于設(shè)置請求超時(shí)時(shí)間。單位是秒。
cafile和capath代表 CA 證書和 CA 證書的路徑。如果使用HTTPS則需要用到。
context參數(shù)必須是ssl.SSLContext類型,用來指定SSL設(shè)置
cadefault參數(shù)已經(jīng)被棄用,可以不用管了。
該方法也可以單獨(dú)傳入urllib.request.Request對象
該函數(shù)返回結(jié)果是一個(gè)http.client.HTTPResponse對象。
http.client.HTTPResponse對象。它具有msg、version、status、reason、debuglevel、closed等屬性以及read()、readinto()、getheader(name)、getheaders()、fileno()等函數(shù)。
# print(response.msg) # OK # print(response.version) #11 # print(response.status) #200 # print(response.reason) #OK # print(response.getcode()) #200 # print(response.getheaders) #> # print(response.geturl()) #http://httpbin.org/headers
2、post請求
from urllib import request,parse url = "http://httpbin.org"data = { 'name':'xfy'}# data = bytes(parse.urlencode(data),encoding='utf8'); data = parse.urlencode(data).encode() response = request.urlopen(url+"/post",data=data) print(response.status) #200print(response.read().decode())
data 需要被轉(zhuǎn)碼成字節(jié)流。而data 是一個(gè)字典。我們需要使用 parse.urlencode() 將字典轉(zhuǎn)化為字符串。再使用 bytes()或者encode() 轉(zhuǎn)為字節(jié)流。最后使用 urlopen() 發(fā)起請求,請求是模擬用 POST 方式提交表單數(shù)據(jù)。
這里說一下http://httpbin.org,這個(gè)url專門是用來爬蟲請求測試的。
http://httpbin.org/get 測試get請求 http://httpbin.org/post 測試post請求 http://httpbin.org/headers 測試獲得headers http://httpbin.org/ip 測試獲得ip http://httpbin.org/cookies 測試獲得cookies
三、創(chuàng)建 Request 對象
urlopen()還可以傳一個(gè)Request對象
req = request.Request(url+"/get") response = request.urlopen(req) print(response.read().decode())
urllib/request 包下有一個(gè)類Request
其初始化方法如下
def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None):
url 參數(shù)是請求鏈接,這個(gè)是必傳參數(shù),其他的都是可選參數(shù)。
data 參數(shù)跟 urlopen() 中的 data 參數(shù)用法相同。
headers 參數(shù)是指定發(fā)起的 HTTP 請求的頭部信息。headers 是一個(gè)字典。它除了在 Request 中添加,還可以通過調(diào)用 Reques t實(shí)例的 add_header() 方法來添加請求頭。
origin_req_host 參數(shù)指的是請求方的 host 名稱或者 IP 地址。
unverifiable 參數(shù)表示這個(gè)請求是否是無法驗(yàn)證的,默認(rèn)值是False。意思就是說用戶沒有足夠權(quán)限來選擇接收這個(gè)請求的結(jié)果。例如我們請求一個(gè)HTML文檔中的圖片,但是我們沒有自動(dòng)抓取圖像的權(quán)限,我們就要將 unverifiable 的值設(shè)置成 True。
method 參數(shù)指的是發(fā)起的 HTTP 請求的方式,有 GET、POST、DELETE、PUT等。
以上是python安裝urllib的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!