python爬蟲請求頭
爬蟲請求頭
網頁獲取:
通過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爬蟲(二)——傳送請求Python爬蟲
- Python爬蟲基礎-01-帶有請求引數的爬蟲Python爬蟲
- Python爬蟲Post請求返回值為-1000Python爬蟲
- Requests如何在Python爬蟲中實現get請求?Python爬蟲
- 爬蟲 | 非同步請求aiohttp模組爬蟲非同步AIHTTP
- Python網路爬蟲第三彈《爬取get請求的頁面資料》Python爬蟲
- 【爬蟲】第二章-基本請求庫爬蟲
- 爬蟲快速入門——Get請求的使用爬蟲
- Python開發技巧:scrapy-redis爬蟲如何傳送POST請求PythonRedis爬蟲
- 4.爬蟲 requests庫講解 GET請求 POST請求 響應爬蟲
- Python爬蟲:HTTPS請求與響應,以及抓包工具Fiddler的使用Python爬蟲HTTP
- 爬蟲:HTTP請求與HTML解析(爬取某乎網站)爬蟲HTTPHTML網站
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 求職簡歷-Python爬蟲工程師求職Python爬蟲工程師
- 【0基礎學爬蟲】爬蟲基礎之網路請求庫的使用爬蟲
- 利用post請求傳送內容進行爬蟲爬蟲
- 爬蟲中的TCP請求自動切換ip爬蟲TCP
- Python中get、post請求詳解(HTTP請求頭、狀態碼)PythonHTTP
- TCP 請求頭TCP
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- 有趣的請求引數/請求頭
- 爬蟲中網路請求的那些事之urllib庫爬蟲
- ajax中設定請求頭和自定義請求頭
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- 使用Python獲取HTTP請求頭資料PythonHTTP
- python 爬蟲Python爬蟲
- python爬蟲Python爬蟲
- Datawhale-爬蟲-Task1(學習get與post請求)爬蟲
- 爬蟲實戰:從HTTP請求獲取資料解析社群爬蟲HTTP
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- HTTP請求頭與響應頭HTTP
- 爬蟲工作原理詳解:從網頁請求到資料提取爬蟲網頁
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- python爬蟲2Python爬蟲
- Python爬蟲-xpathPython爬蟲
- Python爬蟲——XPathPython爬蟲
- Python爬蟲--2Python爬蟲
- Python asyncio 爬蟲Python爬蟲