python的rllib庫你了解嗎
urllib庫作用
urllib 庫 是Python內(nèi)置的 HTTP 請求庫。urllib 模塊提供的上層接口,使訪問 www 和 ftp 上的數(shù)據(jù)就像訪問本地文件一樣。我們爬取網(wǎng)頁的時候,經(jīng)常需要用到這個庫。
Urllib 庫下的幾種模塊的基本使用
一、urllib.request模塊
1.功能
urllib.request 模塊提供了最基本的構(gòu)造 HTTP (或其他協(xié)議如 FTP)請求的方法,利用它可以模擬瀏覽器的一個請求發(fā)起過程。利用不同的協(xié)議去獲取 URL 信息。它的某些接口能夠處理基礎(chǔ)認證 ( Basic Authenticaton) 、redirections (HTTP 重定向)、 Cookies (瀏覽器 Cookies)等情況。而這些接口是由 handlers 和 openers 對象提供的。
2.常用方法
2.1 urlopen()方法
語法格式:
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
參數(shù)說明:url:需要打開的網(wǎng)址; data: Post 提交的數(shù)據(jù), 默認為 None ,當(dāng) data 不為 None 時, urlopen() 提交方式為 Post; timeout:設(shè)置網(wǎng)站訪問超時時間
用例:
import urllib.request# 等價于from urllib import request response = urllib.request.urlopen('https://www.baidu.com') print("查看 response 響應(yīng)信息類型: ",type(response)) page = response.read() print(page.decode('utf-8'))
說明: 直接使用 urllib.request 模塊中的 urlopen方法獲取頁面,其中 page 數(shù)據(jù)類型為 bytes 類型,經(jīng)過 decode 解碼 轉(zhuǎn)換成 string 類型。通過輸出結(jié)果可以 urlopen 返回對象是HTTPResposne 類型對象。
urlopen 返回一個類文件對象,并提供了如下方法:
read() , readline() , readlines() , fileno() , close()
:這些方法的使用方式與文件對象完全一樣;
info():返回一個httplib.HTTPMessage對象,表示遠程服務(wù)器返回的頭信息;可以通過Quick Reference to Http Headers查看 Http Header 列表。
getcode():返回Http狀態(tài)碼。如果是http請求,200表示請求成功完成;404表示網(wǎng)址未找到;
geturl():返回獲取頁面的真實 URL。在 urlopen(或 opener 對象)可能帶一個重定向時,此方法很有幫助。獲取的頁面 URL 不一定跟真實請求的 URL 相同。
示例:
import urllib.request response = urllib.request.urlopen('https://python.org/') print("查看 response 的返回類型:",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)頁源碼:",page.decode('utf-8'))
2.2 Request()方法
使用request()來包裝請求,再通過urlopen()獲取頁面。
語法格式:
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ù)說明:
User-Agent
:這個頭部可以攜帶如下幾條信息:瀏覽器名和版本號、操作系統(tǒng)名和版本號、默認語言。這個數(shù)據(jù)可以從 網(wǎng)頁開發(fā)工具上的請求反應(yīng)信息中獲取(瀏覽器上一般按 F12 打開開發(fā)工具)。作用是用于偽裝瀏覽器。
Referer
:可以用來防止盜鏈,有一些網(wǎng)站圖片顯示來源 https://***.com ,就是檢查 Referer 來鑒定的。
Connection
:表示連接狀態(tài),記錄 Session 的狀態(tài)。
origin_req_host
:請求方的 host 名稱或者 IP 地址。
unverifiable
:指請求無法驗證,默認為 False。用戶并沒有足夠的權(quán)限來選擇接收這個請求結(jié)果,例如請求一個 HTML 文檔中的圖片,但沒有自動抓取圖像的權(quán)限,這時 unverifiable 為 True。
method
:指定請求使用的方法,例如 GET、POST、PUT 等。
參考:https://www.jb51.net/article/209542.htm
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。