前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
作者:蟲蕭
PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取
可以免費領取原始碼、專案實戰視頻、PDF檔案等
requests模塊
python中封裝好的一個基于網路請求的模塊,用來模擬瀏覽器發請求,安裝:pip install requests
requests模塊的編碼流程
- 指定url
- 發起請求
- 獲取相應資料
- 持久化儲存
# 爬取搜狗首頁的頁面原始碼資料
import requests
# 1. 指定url
url = "https://www.sogou.com"
# 2.發送請求 get
response = requests.get(url=url) # get回傳值是Response物件
# 獲取回應資料,回應資料在Response物件里
page_text = response.text # text回傳字串形式的回應資料
# 4.持久化儲存
with open("sogou.html","w",encoding='utf-8') as fp:
fp.write(page_text)
專案:實作一個簡易的網頁采集器
要求:程式基于搜狗錄入任意的關鍵字然后獲取關鍵字對應的相關的整個頁面,
# 1.指定url,需要讓url攜帶的引數動態化
url = "https://www.sogou.com/web"
# 實作引數動態化,不推薦引數的拼接,引數如果太多就相當麻煩,
# requests模塊實作了更為簡便的方法
ky = input("enter a key")
params = {
'query':ky
}
# 將需要的請求引數對應的字典作用到get方法的params引數中,params引數接受一個字典
response = requests.get(url=url,params=params)
page_text = response.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
fp.write(page_text)
上述代碼執行后:
- 出現了亂碼
- 資料量級不對
# 解決亂碼
url = "https://www.sogou.com/web"
ky = input("enter a key")
params = {
'query':ky
}
response = requests.get(url=url,params=params)
# print(response.encoding) 會列印原來response的編碼格式
response.encoding = 'utf-8' # 修改回應資料的編碼格式
page_text = response.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
fp.write(page_text)
上述代碼執行后:
收到了錯誤頁面(搜狗的反爬機制)
UA檢測
- 絕大多數網站都有UA檢查反爬機制
- 門戶網站通過檢測請求載體的身份標識判定該請求是否為爬蟲發出的請求
反反爬策略:UA偽裝 請求頭增加User-Agent
打開瀏覽器請求搜狗頁面,右鍵點擊檢查進入Network,點擊Headers找到瀏覽器的User-Agent
注意:任意瀏覽器的身份標識都可以,
# 反反爬策略:請求頭增加User-Agent
url = "https://www.sogou.com/web"
ky = input("enter a key")
params = {
'query':ky
}
# 請求頭中增加User-Agent ,注意請求頭的資料格式是鍵值對,且都是字串,
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
}
response = requests.get(url=url,params=params,headers=headers)
response.encoding = 'utf-8'
page_text = response.text
with open(f"{ky}.html","w",encoding='utf-8') as fp:
fp.write(page_text)
注意:get的引數headers是一個字典,且鍵值都是字串形式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20961.html
標籤:Python
上一篇:Python資料可視化實戰講解
