Request模組實戰02 --- 實現簡易網頁採集器(UA偽裝反爬策略、處理有引數url)
Request模組實戰02 — 實現簡易網頁採集器(UA偽裝反爬策略、處理有引數url)
目錄:
一、反爬機制
對於爬蟲使用者來說,網站的反爬機制可以說是他們的頭號敵人。反爬機制是為了防止爬蟲爬取資料過於頻繁,給伺服器造成過重的負擔導致伺服器崩潰而設定的機制,它其實也有幾種不同的方式:
- 通過UA機制識別爬蟲
UA的全稱是
User Agent
,它是請求瀏覽器的身份標誌
,很多網站使用它來作為識別爬蟲的標誌,如果訪問請求的頭部中沒有帶UA那麼就會被判定為爬蟲,但由於這種要針對這種反爬蟲機制十分容易,即隨機UA,所以這種反爬機制使用的很少。
- 通過訪問頻率識別爬蟲
爬蟲為了保證效率,往往會在很短的時間內多次訪問目標網站,所以可以通過單個IP訪問的頻率來判斷是否為爬蟲。並且,這種反爬方式比較難以被反反爬機制反制,只能通過更換代理IP來保證效率,如飛魚ip代理。
- 通過Cookie和驗證碼識別爬蟲
Cookie就是指會員制的賬號密碼登陸驗證,這就可以通過限制單賬號抓取頻率來限制爬蟲抓取,而驗證碼完全是隨機的,爬蟲指令碼無法正確識別,同樣可以限制爬蟲程式。
二、UA偽裝
- User-Agent:
請求載體身份標識,通過瀏覽器發起的請求,請求載體為瀏覽器,則該請求的User-Agent為瀏覽器的身份標識,如果使用爬蟲程式發起的請求,則該請求的載體為爬蟲程式,則該請求的User-Agent為爬蟲程式的身份標識。
伺服器可以通過該值來判斷髮起請求的是瀏覽器還是爬蟲程式
。
通過正常的瀏覽頁面我們可以獲得允許正常訪問的User-Agent。( 網頁中按F12)
- 反爬機制:
某些入口網站會對訪問該網站的請求中的User-Agent進行捕獲和判斷,如果該請求的UA為爬蟲程式,那麼就拒絕該提供請求資料。
- 反爬策略
反爬取策略,讓爬蟲請求對應的url身份標識偽裝成某一款瀏覽器
三、網頁採集器
網頁採集器,簡單的來說就是利用爬蟲技術,實現定向的網頁資訊爬取程式。個人理解為這裡就是將程式看成是一個工具,類似轉換器那種,使用程式碼實現與網路資料的轉換。
四、程式碼實現
# -*- coding: utf-8
# @Time : 2020/12/7 23:55
# @Author : ZYX
# @File : request實戰之網頁採集器.py
# @software: PyCharm
import requests
if __name__ == '__main__':
# UA偽裝,將對應的user-agent封裝到一個字典中
# 對應著谷歌瀏覽器的一個身份標識
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400'
}
# 1.指定url
url = 'https://www.sogou.com/web?'
# 處理url攜帶的引數:封裝到字典中
kw = input('enter a word:')
param={
'query':kw
}
# 2.傳送請求
# 對指定的url發起的請求對應的url是攜帶引數的,並且請求過程中處理了引數
response = requests.get(url=url,params=param,headers=headers)
# 3.獲得相應資料
page_data = response.text
print(page_data)
# 4.持久化資料儲存
fileName = kw+'.html'
with open('./data/'+fileName,'w',encoding='utf-8') as fp:
fp.write(page_data)
print(fileName+'儲存成功,爬取資料結束!!!')
解析:
-
UA偽裝,將對應的user-agent封裝到一個字典中,對應著谷歌瀏覽器的一個身份標識,通過該標識瀏覽器會將爬蟲當做是某一款瀏覽器。
-
指定url,並處理url攜帶的引數:封裝到字典中。
-
傳送請求,對指定的url發起的請求對應的url是攜帶引數的,並且請求過程中處理了引數 — UA偽裝、請求引數query、url網址 。
-
獲得相應資料,並將其持久化資料儲存。簡單的來說就是將爬取的結果以檔案的形式儲存。
-
執行程式,控制檯輸入引數,等待爬取結果
-
開啟爬取結果檔案,並在網頁中開啟測試。
相關文章
- Request模組實戰01 ---簡單爬取頁面
- 監聽瀏覽器更新URL引數,實現偽SPA單頁面應用瀏覽器
- Python簡單兩步實現天氣爬蟲採集器Python爬蟲
- 手把手教你寫電商爬蟲(2):實戰尚妝網分頁商品採集爬蟲爬蟲
- 易優cms網站SEO模組URL配置偽靜態靜態頁面設定網站
- js實現獲取URL引數JS
- 實戰5-某政府採購網cookies反爬(進入前檢查瀏覽器)Cookie瀏覽器
- 網址url相關引數獲取處理外掛簡單介紹
- 頁面資料採集——網路爬蟲實戰(ASP.NET Web 部落格園為例)爬蟲ASP.NETWeb
- 對於反爬蟲偽裝瀏覽器進行爬蟲爬蟲瀏覽器
- Java實現簡易聯網坦克對戰小遊戲Java遊戲
- Python網路爬蟲資料採集實戰:Requests和Re庫Python爬蟲
- 網頁資料採集器網頁
- 物聯網智慧閘道器實現汙水處理PLC資料採集與組態監控
- 一站式工業邊緣資料採集處理與裝置反控實踐
- javascript 非同步模組載入 簡易實現JavaScript非同步
- 簡單實現批處理
- Python技法:用re模組實現簡易tokenizerPython
- FastAPI實戰:簡易MockServeASTAPIMock
- 在Pyppeteer中實現反爬蟲策略和資料保護爬蟲
- C++實現簡易計算器C++
- 使用 HttpClient 和 HtmlParser 實現簡易爬蟲(轉載)HTTPclientHTML爬蟲
- Puppeteer 實戰-爬取動態生成的網頁網頁
- Python爬蟲實戰系列4:天眼查公司工商資訊採集Python爬蟲
- PHP - curl實現採集PHP
- namedtuple簡易實現
- 三種方法實現:獲取 url 中的引數
- EBS--採購模組--接收事務處理器
- iOS視訊採集實戰(AVCaptureSession)iOSAPTSession
- Flutter 螢幕採集實戰分享Flutter
- Jmeter分散式壓測實戰及踩坑處理(含引數化)JMeter分散式
- SEO實戰:如何處理網站被黑網站
- Python+PhantomJS+selenium+BeautifulSoup實現簡易網路爬蟲PythonJS爬蟲
- 爬蟲實戰:從網頁到本地,如何輕鬆實現小說離線閱讀爬蟲網頁
- 使用爬蟲實現拼多多商家電話採集軟體爬蟲
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- LLM實戰:當網頁爬蟲整合gpt3.5網頁爬蟲GPT
- Neuron+eKuiper 實現工業物聯網資料採集、清理與反控UI