1、代理設置
代理(英語:Proxy),也稱網絡代理,是一種特殊的網絡服務,英文全稱是(Proxy Server),其功能就是代理網絡用户去取得網絡信息。形象的説:它是網絡信息的中轉站。代理服務器就好象一個大的Cache,這樣就能顯著提高瀏覽速度和效率。Requests模塊設置代理的方式如下:
import requests
proxy_server={'http':'http://127.0.0.1:443','https':'https://127.0.0.1:443'}
response=requests.get('https://www.taobao.com/',proxies=proxy_server,verify=False)
print(response.content.decode('utf-8'))
# 包含用户名和密碼的代理:
import requests
# proxies={ "http": "http://username:password@127.0.0.1:443/" }
proxies={ "http": "http://15581660487:123456@127.0.0.1:443/" }
response=requests.get("https://www.taobao.com/",proxies=proxies,verify=False)
print(response.content.decode('utf-8'))
2、超時設置
Requests模塊可以設置接收數據的超時時間,超出設定的時間還沒有數據返回,就拋出異常,超時設置有兩種類型表達:float、tupleimport
import requests
# response=requests.get('https://www.baidu.com',timeout=2) #float
response=requests.get('https://www.baidu.com',timeout=(0.1,0.2)) #tuple 前面是鏈接請求時間 後面是接收內容時間
print(response.content.decode('utf-8'))
3、重定向設置
在請求url時,服務器會自動把我們的請求重定向,可以使用r.history來查看重定向。如果不想進行自動重定向,可以用參數allow_redirects關閉。
#重定向
import requests
response=requests.get('http://www.360buy.com')
print(response.history)
print(response.url)
response1=requests.get('http://www.360buy.com',allow_redirects=False)
print(response1.history)
print(response1.url)
4、SSL Cert Verification
很多網站都是https,但是不用證書也可以訪問,大多數情況都是可以攜帶也可以不攜帶證書如知乎\百度等都是可帶可不帶,但有硬性要求的,則必須帶,比如對於定向的用户,拿到證書後才有權限訪問某個特定網站。舉例:https://www.12306.cn
import requests
response=requests.get('https://www.12306.cn')
print(response.content.decode('utf-8'))
#如果response.content.decode('utf-8')報錯,説明網站需要SSL認證,處理方式如下
#方式一:verify改為False 不認證證書
#老版本requests處理警告
response=requests.get('https://www.12306.cn',verify=False)
print(response.content.decode('utf-8'))
# 方式二:關閉警告
#關閉警告方法1
requests.packages.urllib3.disable_warnings()
#關閉警告方法2
# urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
response=requests.get('https://www.12306.cn',verify=False)
print(response.content.decode('utf-8'))
#方式三:pyopenssl
# pip install -U requests[security]
# pip會安裝三個security相關的package:pyopenssl\cryptography \cffi
#方式四:加上證書:(最好的解決方案)
response=requests.get('https://www.12306.cn',cert=('/path/server.crt','/path/key'))