- 或許會持續更新(咕咕咕)
- 遇到的問題會分類總結
r=requests.get(url, headers=header)
;header必須是dict,這樣能夠在請求時帶上給定的請求頭time.sleep(random.randint(a,b))
來暫停一個隨機時間proxies=proxy
,proxy應該是一個dict,形式爲{'ip':'port'},能夠有多個IP代理import requests r = requests.get(url) r.encoding = r.apparent_encoding
這種方法自動猜想可能的編碼方式,並用這種編碼方式編碼響應體。可是猜想會存在必定的錯誤,自動選擇編碼方式會沒法編碼某些特殊的字符,好比簡體中文、繁體中文html
<meta http-equiv='Content-Type' content='text/html; charset=gbk'>
裏的charset字符集爲gbk。此時,r.encoding='gbk'
就能夠選擇gbk編碼open()
時,帶上encoding=參數,指定編碼方式encoding='utf-8'
,便可解決verify='\path\of\CAbundle'
參數來使用本地證書驗證,也能夠簡單指定爲verify=False
不進行驗證urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
關掉這個警告requests.DEFAULT_RETRIES = 10
來修改requests庫默認的重試次數,在網絡情況不佳或是對方服務器性能不高致使請求失敗時使用stream=True
,實現流式下載,在請求大文件時使用簡單使用ThreadPoolExecutor便可解決。python
from future import ThreadPoolExecutor with ThreadPoolExecutor(max_workers=int) as pool: # 聲明瞭一個線程池 pool.map(func, 可迭代數據結構如list)
須要考慮對臨界區資源進行加鎖,可使用l=threading.lock()
來聲明一個鎖,l.acquire()
來加鎖,l.release()
來解鎖瀏覽器