python爬蟲請求頭的使用
爬蟲請求頭
網(wǎng)頁獲取:
通過urlopen來進(jìn)行獲取
requset.urlopen(url,data,timeout)
第一個參數(shù)url即為URL,第二個參數(shù)data是訪問URL時要傳送的數(shù)據(jù),第三個timeout是設(shè)置超時時間。第二三個參數(shù)是可以不傳送的,data默認(rèn)為空None,timeout默認(rèn)為 socket._GLOBAL_DEFAULT_TIMEOUT第一個參數(shù)URL是必須要加入的,執(zhí)行urlopen方法之后,返回一個response對象,返回信息便保存在這里面
from urllib.request import urlopenurl = 'https://www.baidu.com/'respons = urlopen(url)#最簡單的爬取情況這樣爬取大部分網(wǎng)頁無法爬取成功
response對象:
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ù)器頁面出錯,5服務(wù)器問題
response.geturl()返回 返回實(shí)際數(shù)據(jù)的實(shí)際URL,防止重定向問題
response.info()返回 服務(wù)器響應(yīng)的HTTP報(bào)頭
Request對象
Request對象,由于urlopen參數(shù)可以傳入一個request請求(可以理解成為再加一步封裝的功能)因?yàn)樵跇?gòu)建請求時還需要加入好多內(nèi)容,通過構(gòu)建一個request,服務(wù)器響應(yīng)請求得到應(yīng)答,這樣顯得邏輯上清晰明確
from urllib.request import urlopen,Requestfrom fake_useragent import UserAgent#這個包可以隨機(jī)生成User-Agenturl = 'https://www.baidu.com/'headers = {'User-Agent':UserAgent().firefox}#生成火狐的request = Request(url,headers=headers)response = urlopen(request)a=response.read().decode()
Get請求
瀏覽器通過GET方法發(fā)出請求爬蟲主要通過get再url中加入請求的參數(shù),由于中文的需要轉(zhuǎn)碼通過Urllib.parse.urlencode() 針對多個參數(shù)進(jìn)行轉(zhuǎn)碼操作輸入格式為字典類型Urllib.parse.quote() 針對單個字符串進(jìn)行轉(zhuǎn)碼操作Str格式.format( ) 用于拼接字符串
post請求
一般在需要登錄的地方用的比較多需要在request請求中加如一個data用來傳入?yún)?shù)參數(shù)的形式要以字典格式通過urllib.parse.urlencode()進(jìn)行轉(zhuǎn)換成字符串形式再通過encode()函數(shù)對字符串進(jìn)行轉(zhuǎn)碼(默認(rèn)值就可以)
發(fā)送請求/響應(yīng)header頭的含義
名稱 含義 Accept 告訴服務(wù)器,客戶端支持的數(shù)據(jù)類型 Accept-Charset 告訴服務(wù)器,客戶端采用的編碼 Accept-Encoding 告訴服務(wù)器,客戶機(jī)支持的數(shù)據(jù)壓縮格式 Accept-Language 告訴服務(wù)器,客戶機(jī)的語言環(huán)境 Host 客戶機(jī)通過這個頭告訴服務(wù)器,想訪問的主機(jī)名 If-Modified-Since 客戶機(jī)通過這個頭告訴服務(wù)器,資源的緩存時間 Referer 客戶機(jī)通過這個頭告訴服務(wù)器,它是從哪個資源來訪問服務(wù)器的。(一般用于防盜鏈) User-Agent 客戶機(jī)通過這個頭告訴服務(wù)器,客戶機(jī)的軟件環(huán)境 Cookie 客戶機(jī)通過這個頭告訴服務(wù)器,可以向服務(wù)器帶數(shù)據(jù) Refresh 服務(wù)器通過這個頭,告訴瀏覽器隔多長時間刷新一次 Content-Type 服務(wù)器通過這個頭,回送數(shù)據(jù)的類型 Content-Language 服務(wù)器通過這個頭,告訴服務(wù)器的語言環(huán)境 Server 服務(wù)器通過這個頭,告訴瀏覽器服務(wù)器的類型 Content-Encoding 服務(wù)器通過這個頭,告訴瀏覽器數(shù)據(jù)采用的壓縮格式 Content-Length 服務(wù)器通過這個頭,告訴瀏覽器回送數(shù)據(jù)的長度
Ajax請求用于提取動態(tài)的頁面 網(wǎng)頁數(shù)據(jù)根據(jù)拖動進(jìn)行顯示通過瀏覽器工具箱,查找包的信息,找到url的規(guī)律進(jìn)行爬取如果無法知道要循環(huán)多少次則規(guī)定一個死循環(huán),爬取頁面為空時停止循環(huán)也可以通過改變url一次性輸出更多的網(wǎng)頁信息(只要服務(wù)器允許)
https請求因?yàn)樵谟行g覽器中存在很多證書所以在大部分網(wǎng)頁爬取的時候不用改變證書或者添加證書但有些自己寫證書的網(wǎng)站需要進(jìn)行這一步操作https請求=在http上加ssl,http請求是明文直接可以看見,為了安全要加上ssl可以選擇忽略證書進(jìn)行爬取 context = ssl._create_unverified_context()
到此這篇關(guān)于python爬蟲請求頭的使用的文章就介紹到這了,更多相關(guān)python爬蟲請求頭內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法2. Springboot 全局日期格式化處理的實(shí)現(xiàn)3. 利用CSS制作3D動畫4. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程5. jsp+servlet簡單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))6. JAMon(Java Application Monitor)備忘記7. 完美解決vue 中多個echarts圖表自適應(yīng)的問題8. SpringBoot+TestNG單元測試的實(shí)現(xiàn)9. 存儲于xml中需要的HTML轉(zhuǎn)義代碼10. idea配置jdk的操作方法
