基於Request庫進行搭建
Request:
request庫是用來發送HTTP請求,接收HTTP響應的一個python庫
request庫經常被用來,爬取,網站信息,用它來發起HTTP請求到網站,從HTTP響應消息中提取信息
request不是python的標准庫,屬於第三方庫,需要進行安裝:pip install request
用法:
Cookie處理
cookie處理方式
手動處理cookie
1.headers添加cookie鍵值對
2.RequestsCookieJar
3.Session類自動封裝cookie
自動處理cookie:Session 自動封裝
會話維持與模擬登陸
HTTP無狀態:
使用requests模塊get() 和 post()的請求的時候 相當於每次獨立的打開一個瀏覽器去請求一個頁面 這兩次get 和post 它之間都不會產生聯系 所以需要會話維持
會話維持:Session對象
from request import Session
session = Session()
res = session.get('https://baidu.com')
文件上傳
request模塊實現請求, post請求 -->向服務器提交數據
import requests
files ={
'file': open('dasdsa.html', 'rb')
}
res = requests.get(url=url, files=files)
SSL證書驗證
HTTP與HTTPS: HTTPS是HTTP的安全版本, HTTPS在HTTP的基礎上多了SSL驗證
SSL證書驗證
1. requests 提供了證書驗證功能, 發起HTTP請求時, 模塊會檢查SSL證書, 但檢查的行為可以用 verify參數來控制。
verify = False # 不檢查SSL證書
verify = True # 檢查SSL證書
2. 異常
如果使用requests模塊的SSL驗證, 驗證不通過會拋出異常, 此時可以將verify參數設置為Fales
不拋異常, 但會出現警告
import requests
requests = requests.get('https://www.12306.cn', verify = False)
print(response.status)
# 異常: SSLError
requests.exceptions.SSLError
# avoiding warning
requests.packages.urllib3.disable_warnings()
# site:
https://www.tutumanhua.com
代理設置
代理: 代理即代理ip
代理ip是指在請求的過程中使用非本機ip進行請求, 避免大數據量頻繁請求過程中出現ip封禁,
使用 proxies 封裝 ip
反爬機制:
原有請求過程:爬蟲 -- 服務器 -- 爬蟲
使用代理過程: 爬蟲-- 代理 -- 服務器 -- 代理 --爬蟲
1.Robots協議: 不遵守, 配置文件中進行設置
2. UA檢查: UA偽裝
3.IP封禁: 代理IP
代理ip 分類:
1. 透明代理ip: 請求時, 服務器知道請求的真實ip, 知道使用了代理
2. 匿名代理ip: 請求時, 服務器知道使用了代理,但不知道請求的真實ip
3. 高匿名代理:請求時, 服務器不知道請求使用了代理, 也不知道請求的真實ip