python爬蟲請求頭的使用
爬蟲請求頭
網頁獲?。?/b>
通過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 urlopenurl = '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,Requestfrom fake_useragent import UserAgent#這個包可以隨機生成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方法發出請求爬蟲主要通過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爬蟲請求頭的使用的文章就介紹到這了,更多相關python爬蟲請求頭內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: