python的rllib庫(kù)你了解嗎
urllib庫(kù)作用
urllib 庫(kù) 是Python內(nèi)置的 HTTP 請(qǐng)求庫(kù)。urllib 模塊提供的上層接口,使訪問(wèn) www 和 ftp 上的數(shù)據(jù)就像訪問(wèn)本地文件一樣。我們爬取網(wǎng)頁(yè)的時(shí)候,經(jīng)常需要用到這個(gè)庫(kù)。
Urllib 庫(kù)下的幾種模塊的基本使用
一、urllib.request模塊
1.功能
urllib.request 模塊提供了最基本的構(gòu)造 HTTP (或其他協(xié)議如 FTP)請(qǐng)求的方法,利用它可以模擬瀏覽器的一個(gè)請(qǐng)求發(fā)起過(guò)程。利用不同的協(xié)議去獲取 URL 信息。它的某些接口能夠處理基礎(chǔ)認(rèn)證 ( Basic Authenticaton) 、redirections (HTTP 重定向)、 Cookies (瀏覽器 Cookies)等情況。而這些接口是由 handlers 和 openers 對(duì)象提供的。
2.常用方法
2.1 urlopen()方法
語(yǔ)法格式:
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
參數(shù)說(shuō)明:url:需要打開(kāi)的網(wǎng)址; data: Post 提交的數(shù)據(jù), 默認(rèn)為 None ,當(dāng) data 不為 None 時(shí), urlopen() 提交方式為 Post; timeout:設(shè)置網(wǎng)站訪問(wèn)超時(shí)時(shí)間
用例:
import urllib.request# 等價(jià)于from urllib import request response = urllib.request.urlopen('https://www.baidu.com') print("查看 response 響應(yīng)信息類(lèi)型: ",type(response)) page = response.read() print(page.decode('utf-8'))
說(shuō)明: 直接使用 urllib.request 模塊中的 urlopen方法獲取頁(yè)面,其中 page 數(shù)據(jù)類(lèi)型為 bytes 類(lèi)型,經(jīng)過(guò) decode 解碼 轉(zhuǎn)換成 string 類(lèi)型。通過(guò)輸出結(jié)果可以 urlopen 返回對(duì)象是HTTPResposne 類(lèi)型對(duì)象。
urlopen 返回一個(gè)類(lèi)文件對(duì)象,并提供了如下方法:
read() , readline() , readlines() , fileno() , close()
:這些方法的使用方式與文件對(duì)象完全一樣;
info():返回一個(gè)httplib.HTTPMessage對(duì)象,表示遠(yuǎn)程服務(wù)器返回的頭信息;可以通過(guò)Quick Reference to Http Headers查看 Http Header 列表。
getcode():返回Http狀態(tài)碼。如果是http請(qǐng)求,200表示請(qǐng)求成功完成;404表示網(wǎng)址未找到;
geturl():返回獲取頁(yè)面的真實(shí) URL。在 urlopen(或 opener 對(duì)象)可能帶一個(gè)重定向時(shí),此方法很有幫助。獲取的頁(yè)面 URL 不一定跟真實(shí)請(qǐng)求的 URL 相同。
示例:
import urllib.request response = urllib.request.urlopen('https://python.org/') print("查看 response 的返回類(lèi)型:",type(response)) print("查看反應(yīng)地址信息: ",response) print("查看頭部信息1(http header):\n",response.info()) print("查看頭部信息2(http header):\n",response.getheaders()) print("輸出頭部屬性信息:",response.getheader("Server")) print("查看響應(yīng)狀態(tài)信息1(http status):\n",response.status) print("查看響應(yīng)狀態(tài)信息2(http status):\n",response.getcode()) print("查看響應(yīng) url 地址:\n",response.geturl()) page = response.read() print("輸出網(wǎng)頁(yè)源碼:",page.decode('utf-8'))
2.2 Request()方法
使用request()來(lái)包裝請(qǐng)求,再通過(guò)urlopen()獲取頁(yè)面。
語(yǔ)法格式:
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
示例:
import urllib.request url = "https://www.lagou.com/zhaopin/Python/?labelWords=label" headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36', 'Referer': 'https://www.lagou.com/zhaopin/Python/?labelWords=label', 'Connection': 'keep-alive' } req = request.Request(url, headers=headers) page = request.urlopen(req).read() page = page.decode('utf-8') print(page)
參數(shù)說(shuō)明:
User-Agent
:這個(gè)頭部可以攜帶如下幾條信息:瀏覽器名和版本號(hào)、操作系統(tǒng)名和版本號(hào)、默認(rèn)語(yǔ)言。這個(gè)數(shù)據(jù)可以從 網(wǎng)頁(yè)開(kāi)發(fā)工具上的請(qǐng)求反應(yīng)信息中獲取(瀏覽器上一般按 F12 打開(kāi)開(kāi)發(fā)工具)。作用是用于偽裝瀏覽器。
Referer
:可以用來(lái)防止盜鏈,有一些網(wǎng)站圖片顯示來(lái)源 https://***.com ,就是檢查 Referer 來(lái)鑒定的。
Connection
:表示連接狀態(tài),記錄 Session 的狀態(tài)。
origin_req_host
:請(qǐng)求方的 host 名稱(chēng)或者 IP 地址。
unverifiable
:指請(qǐng)求無(wú)法驗(yàn)證,默認(rèn)為 False。用戶并沒(méi)有足夠的權(quán)限來(lái)選擇接收這個(gè)請(qǐng)求結(jié)果,例如請(qǐng)求一個(gè) HTML 文檔中的圖片,但沒(méi)有自動(dòng)抓取圖像的權(quán)限,這時(shí) unverifiable 為 True。
method
:指定請(qǐng)求使用的方法,例如 GET、POST、PUT 等。
參考:http://www.dbjr.com.cn/article/209542.htm
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python通過(guò)OpenCV的findContours獲取輪廓并切割實(shí)例
這篇文章主要介紹了Python通過(guò)OpenCV的findContours獲取輪廓并切割實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python實(shí)現(xiàn)繁體轉(zhuǎn)為簡(jiǎn)體的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)繁體轉(zhuǎn)為簡(jiǎn)體的方法,涉及Python編碼轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2018-12-12tensorflow ckpt模型和pb模型獲取節(jié)點(diǎn)名稱(chēng),及ckpt轉(zhuǎn)pb模型實(shí)例
今天小編就為大家分享一篇tensorflow ckpt模型和pb模型獲取節(jié)點(diǎn)名稱(chēng),及ckpt轉(zhuǎn)pb模型實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01pandas數(shù)據(jù)拼接的實(shí)現(xiàn)示例
這篇文章主要介紹了pandas數(shù)據(jù)拼接的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python使用ctypes調(diào)用第三方庫(kù)時(shí)出現(xiàn)undefined?symbol錯(cuò)誤詳解
python中時(shí)間的庫(kù)有time和datetime,pandas也有提供相應(yīng)的時(shí)間處理函數(shù),下面這篇文章主要給大家介紹了關(guān)于python使用ctypes調(diào)用第三方庫(kù)時(shí)出現(xiàn)undefined?symbol錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2023-02-02修改Python的pyxmpp2中的主循環(huán)使其提高性能
這篇文章主要介紹了修改Python的pyxmpp2中的主循環(huán)使其提高性能,pyxmpp2是Python中使用需XMPP協(xié)議的一個(gè)常用工具,要的朋友可以參考下2015-04-04