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單頁面應用瀏覽器
- 易優cms網站SEO模組URL配置偽靜態靜態頁面設定網站
- 物聯網智慧閘道器實現汙水處理PLC資料採集與組態監控
- Jsoup + HtmlUtil 實現網易新聞網頁爬蟲JSHTML網頁爬蟲
- Python技法:用re模組實現簡易tokenizerPython
- js實現獲取URL引數JS
- EBS--採購模組--接收事務處理器
- 實戰5-某政府採購網cookies反爬(進入前檢查瀏覽器)Cookie瀏覽器
- Python網路爬蟲資料採集實戰:Requests和Re庫Python爬蟲
- 頁面資料採集——網路爬蟲實戰(ASP.NET Web 部落格園為例)爬蟲ASP.NETWeb
- py 爬取某網站直播集錦-抓取組裝得到詳情頁視訊集錦 url-現場敲程式碼網站
- 一站式工業邊緣資料採集處理與裝置反控實踐
- 對於反爬蟲偽裝瀏覽器進行爬蟲爬蟲瀏覽器
- 模擬實現簡易版shell
- 簡單實現批處理
- MT7603 wifi晶片模組,MT7603處理器引數介紹WiFi晶片
- 模組化實現的好處
- [實戰演練]python3使用requests模組爬取頁面內容Python
- 一起來實現網易雲音樂引導頁效果
- 海思Hi3798模組晶片,Hi3798處理器引數介紹晶片
- Java實現簡易聯網坦克對戰小遊戲Java遊戲
- 在Pyppeteer中實現反爬蟲策略和資料保護爬蟲
- 大規模非同步新聞爬蟲:實現功能強大、簡潔易用的網址池(URL Pool)非同步爬蟲
- 為爬蟲框架構建Selenium模組、DSL模組(Kotlin實現)爬蟲框架架構Kotlin
- Python 爬取網易雲音樂 自動安裝所需模組Python
- 三種方法實現:獲取 url 中的引數
- Puppeteer 實戰-爬取動態生成的網頁網頁
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- Jmeter分散式壓測實戰及踩坑處理(含引數化)JMeter分散式
- Neuron+eKuiper 實現工業物聯網資料採集、清理與反控UI
- selenium細節實戰02-->好用的expected_conditions模組
- FastAPI實戰:簡易MockServeASTAPIMock
- 001.01 一般網頁爬蟲處理網頁爬蟲
- Python爬蟲實戰系列4:天眼查公司工商資訊採集Python爬蟲
- 【python爬蟲實戰】使用Selenium webdriver採集山東招考資料Python爬蟲Web
- C++實現簡易計算器C++
- JS逆向實戰26——某店ua模擬登陸JS