python爬蟲請(qǐng)求頭的使用
爬蟲請(qǐng)求頭
網(wǎng)頁獲取:
通過urlopen來進(jìn)行獲取
requset.urlopen(url,data,timeout)
第一個(gè)參數(shù)url即為URL,第二個(gè)參數(shù)data是訪問URL時(shí)要傳送的數(shù)據(jù),第三個(gè)timeout是設(shè)置超時(shí)時(shí)間。
第二三個(gè)參數(shù)是可以不傳送的,data默認(rèn)為空None,timeout默認(rèn)為 socket._GLOBAL_DEFAULT_TIMEOUT
第一個(gè)參數(shù)URL是必須要加入的,執(zhí)行urlopen方法之后,返回一個(gè)response對(duì)象,返回信息便保存在這里面
from urllib.request import urlopen url = "https://www.baidu.com/" respons = urlopen(url)#最簡單的爬取情況這樣爬取大部分網(wǎng)頁無法爬取成功
response對(duì)象:
response.read()
read()方法就是讀取文件里的全部內(nèi)容,返回bytes類型
print(type(respons.read()))#結(jié)果為bytes類型所以需要進(jìn)行轉(zhuǎn)碼 print(type(respons.read().decode()))#通過decode轉(zhuǎn)碼結(jié)果為str
response.getcode()
返回 HTTP的響應(yīng)碼,成功返回200,4服務(wù)器頁面出錯(cuò),5服務(wù)器問題
response.geturl()
返回 返回實(shí)際數(shù)據(jù)的實(shí)際URL,防止重定向問題
response.info()
返回 服務(wù)器響應(yīng)的HTTP報(bào)頭
Request對(duì)象
Request對(duì)象,由于urlopen參數(shù)可以傳入一個(gè)request請(qǐng)求(可以理解成為再加一步封裝的功能)因?yàn)樵跇?gòu)建請(qǐng)求時(shí)還需要加入好多內(nèi)容,通過構(gòu)建一個(gè)request,服務(wù)器響應(yīng)請(qǐng)求得到應(yīng)答,這樣顯得邏輯上清晰明確
from urllib.request import urlopen,Request from fake_useragent import UserAgent#這個(gè)包可以隨機(jī)生成User-Agent url = "https://www.baidu.com/" headers = {"User-Agent":UserAgent().firefox}#生成火狐的 request = Request(url,headers=headers) response = urlopen(request) a=response.read().decode()
Get請(qǐng)求
瀏覽器通過GET方法發(fā)出請(qǐng)求
爬蟲主要通過get再url中加入請(qǐng)求的參數(shù),由于中文的需要轉(zhuǎn)碼通過
Urllib.parse.urlencode() 針對(duì)多個(gè)參數(shù)進(jìn)行轉(zhuǎn)碼操作輸入格式為字典類型
Urllib.parse.quote() 針對(duì)單個(gè)字符串進(jìn)行轉(zhuǎn)碼操作
Str格式.format( ) 用于拼接字符串
post請(qǐng)求
一般在需要登錄的地方用的比較多
需要在request請(qǐng)求中加如一個(gè)data用來傳入?yún)?shù)
參數(shù)的形式要以字典格式通過urllib.parse.urlencode()進(jìn)行轉(zhuǎn)換成字符串形式
再通過encode()函數(shù)對(duì)字符串進(jìn)行轉(zhuǎn)碼(默認(rèn)值就可以)
發(fā)送請(qǐng)求/響應(yīng)header頭的含義
名稱 | 含義 |
---|---|
Accept | 告訴服務(wù)器,客戶端支持的數(shù)據(jù)類型 |
Accept-Charset | 告訴服務(wù)器,客戶端采用的編碼 |
Accept-Encoding | 告訴服務(wù)器,客戶機(jī)支持的數(shù)據(jù)壓縮格式 |
Accept-Language | 告訴服務(wù)器,客戶機(jī)的語言環(huán)境 |
Host | 客戶機(jī)通過這個(gè)頭告訴服務(wù)器,想訪問的主機(jī)名 |
If-Modified-Since | 客戶機(jī)通過這個(gè)頭告訴服務(wù)器,資源的緩存時(shí)間 |
Referer | 客戶機(jī)通過這個(gè)頭告訴服務(wù)器,它是從哪個(gè)資源來訪問服務(wù)器的。(一般用于防盜鏈) |
User-Agent | 客戶機(jī)通過這個(gè)頭告訴服務(wù)器,客戶機(jī)的軟件環(huán)境 |
Cookie | 客戶機(jī)通過這個(gè)頭告訴服務(wù)器,可以向服務(wù)器帶數(shù)據(jù) |
Refresh | 服務(wù)器通過這個(gè)頭,告訴瀏覽器隔多長時(shí)間刷新一次 |
Content-Type | 服務(wù)器通過這個(gè)頭,回送數(shù)據(jù)的類型 |
Content-Language | 服務(wù)器通過這個(gè)頭,告訴服務(wù)器的語言環(huán)境 |
Server | 服務(wù)器通過這個(gè)頭,告訴瀏覽器服務(wù)器的類型 |
Content-Encoding | 服務(wù)器通過這個(gè)頭,告訴瀏覽器數(shù)據(jù)采用的壓縮格式 |
Content-Length | 服務(wù)器通過這個(gè)頭,告訴瀏覽器回送數(shù)據(jù)的長度 |
Ajax請(qǐng)求
用于提取動(dòng)態(tài)的頁面 網(wǎng)頁數(shù)據(jù)根據(jù)拖動(dòng)進(jìn)行顯示
通過瀏覽器工具箱,查找包的信息,找到url的規(guī)律進(jìn)行爬取
如果無法知道要循環(huán)多少次則規(guī)定一個(gè)死循環(huán),爬取頁面為空時(shí)停止循環(huán)
也可以通過改變url一次性輸出更多的網(wǎng)頁信息(只要服務(wù)器允許)
https請(qǐng)求
因?yàn)樵谟行g覽器中存在很多證書所以在大部分網(wǎng)頁爬取的時(shí)候不用改變證書或者添加證書但有些自己寫證書的網(wǎng)站需要進(jìn)行這一步操作
https請(qǐng)求=在http上加ssl,http請(qǐng)求是明文直接可以看見,為了安全要加上ssl
可以選擇忽略證書進(jìn)行爬取 context = ssl._create_unverified_context()
到此這篇關(guān)于python爬蟲請(qǐng)求頭的使用的文章就介紹到這了,更多相關(guān)python爬蟲請(qǐng)求頭內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python連接kafka加載數(shù)據(jù)的項(xiàng)目實(shí)踐
本文主要介紹了python連接kafka加載數(shù)據(jù)的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05python 實(shí)現(xiàn)單通道轉(zhuǎn)3通道
今天小編就為大家分享一篇python 實(shí)現(xiàn)單通道轉(zhuǎn)3通道,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5菜單和工具欄功能作用
本文詳細(xì)解讀通過 QtDesigner 創(chuàng)建主窗口、菜單欄和工具欄,并以菜單項(xiàng) “退出” 為例關(guān)聯(lián)系統(tǒng)定義的動(dòng)作處理方法。有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10使用gunicorn部署django項(xiàng)目的問題
這篇文章主要介紹了使用gunicorn部署django項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Python如何保留float類型小數(shù)點(diǎn)后3位
這篇文章主要介紹了Python如何保留float類型小數(shù)點(diǎn)后3位,具有很好的參考價(jià)值,希望對(duì)的大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Django請(qǐng)求響應(yīng)Web Http交互的核心機(jī)制深入理解
本文深入探討了 Django 中的請(qǐng)求與響應(yīng)處理,從 Django 請(qǐng)求和響應(yīng)的基礎(chǔ)知識(shí)、生命周期,到 HttpRequest 和 HttpResponse 對(duì)象的詳細(xì)介紹,同時(shí),討論了 Django 的視圖和請(qǐng)求、響應(yīng)處理,以及安全性和異步處理的考慮2023-09-09Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù)詳解
Python3對(duì)函數(shù)參數(shù)的排序規(guī)則更加通用化了,即Python3 keyword-only參數(shù),該參數(shù)即為必須只按照關(guān)鍵字傳遞而不會(huì)有一個(gè)位置參數(shù)來填充的參數(shù)。這篇文章主要介紹了Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù),需要的朋友可以參考下2019-06-06