這篇文章給大家介紹如何正確的使用python爬蟲請求頭,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
爬蟲請求頭
網頁獲?。?/strong>
通過urlopen來進行獲取
requset.urlopen(url,data,timeout)
第一個參數url即為URL,第二個參數data是訪問URL時要傳送的數據,第三個timeout是設置超時時間。
第二三個參數是可以不傳送的,data默認為空None,timeout默認為 socket._GLOBAL_DEFAULT_TIMEOUT
第一個參數URL是必須要加入的,執行urlopen方法之后,返回一個response對象,返回信息便保存在這里面
from urllib.request import urlopen url = "https://www.baidu.com/" respons = urlopen(url)#最簡單的爬取情況這樣爬取大部分網頁無法爬取成功
response對象:
response.read()
read()方法就是讀取文件里的全部內容,返回bytes類型
print(type(respons.read()))#結果為bytes類型所以需要進行轉碼 print(type(respons.read().decode()))#通過decode轉碼結果為str
response.getcode()
返回 HTTP的響應碼,成功返回200,4服務器頁面出錯,5服務器問題
response.geturl()
返回 返回實際數據的實際URL,防止重定向問題
response.info()
返回 服務器響應的HTTP報頭
Request對象
Request對象,由于urlopen參數可以傳入一個request請求(可以理解成為再加一步封裝的功能)因為在構建請求時還需要加入好多內容,通過構建一個request,服務器響應請求得到應答,這樣顯得邏輯上清晰明確
from urllib.request import urlopen,Request
from fake_useragent import UserAgent#這個包可以隨機生成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請求
瀏覽器通過GET方法發出請求
爬蟲主要通過get再url中加入請求的參數,由于中文的需要轉碼通過
Urllib.parse.urlencode() 針對多個參數進行轉碼操作輸入格式為字典類型
Urllib.parse.quote() 針對單個字符串進行轉碼操作
Str格式.format( ) 用于拼接字符串
post請求
一般在需要登錄的地方用的比較多
需要在request請求中加如一個data用來傳入參數
參數的形式要以字典格式通過urllib.parse.urlencode()進行轉換成字符串形式
再通過encode()函數對字符串進行轉碼(默認值就可以)
發送請求/響應header頭的含義
| 名稱 | 含義 |
|---|---|
| Accept | 告訴服務器,客戶端支持的數據類型 |
| Accept-Charset | 告訴服務器,客戶端采用的編碼 |
| Accept-Encoding | 告訴服務器,客戶機支持的數據壓縮格式 |
| Accept-Language | 告訴服務器,客戶機的語言環境 |
| Host | 客戶機通過這個頭告訴服務器,想訪問的主機名 |
| If-Modified-Since | 客戶機通過這個頭告訴服務器,資源的緩存時間 |
| Referer | 客戶機通過這個頭告訴服務器,它是從哪個資源來訪問服務器的。(一般用于防盜鏈) |
| User-Agent | 客戶機通過這個頭告訴服務器,客戶機的軟件環境 |
| Cookie | 客戶機通過這個頭告訴服務器,可以向服務器帶數據 |
| Refresh | 服務器通過這個頭,告訴瀏覽器隔多長時間刷新一次 |
| Content-Type | 服務器通過這個頭,回送數據的類型 |
| Content-Language | 服務器通過這個頭,告訴服務器的語言環境 |
| Server | 服務器通過這個頭,告訴瀏覽器服務器的類型 |
| Content-Encoding | 服務器通過這個頭,告訴瀏覽器數據采用的壓縮格式 |
| Content-Length | 服務器通過這個頭,告訴瀏覽器回送數據的長度 |
Ajax請求
用于提取動態的頁面 網頁數據根據拖動進行顯示
通過瀏覽器工具箱,查找包的信息,找到url的規律進行爬取
如果無法知道要循環多少次則規定一個死循環,爬取頁面為空時停止循環
也可以通過改變url一次性輸出更多的網頁信息(只要服務器允許)
https請求
因為在有些瀏覽器中存在很多證書所以在大部分網頁爬取的時候不用改變證書或者添加證書但有些自己寫證書的網站需要進行這一步操作
https請求=在http上加ssl,http請求是明文直接可以看見,為了安全要加上ssl
可以選擇忽略證書進行爬取 context = ssl._create_unverified_context()
關于如何正確的使用python爬蟲請求頭就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。