python庫學習之Requests(二)
檔案上傳
import requests
files = {'file': open('favicon.ico', 'rb')}
r = requests.post('http://httpbin.org/post', files=files)
print(r.text)
cookies
import requests
r = requests.get('https://www.baidu.com')
print(r.cookies)
for key, value in r.cookies.items():
print(key + '=' + value)
session維持會話
import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)
SSL證照驗證
import requests
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
直接請求https會得出一個警告
解決方法:
1.忽略這個警告
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
2.通過捕獲警告日誌忽略廣告
import logging
import requests
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
3.通過本地證照
import requests
response = requests.get('https://www.12306.cn', cert=('/path/server.crt', '/path/key'))
print(response.status_code)
代理設定
對於某些網站,在測試的時候請求幾次,能正常獲取內容。但是一旦開始大規模爬取,對於大規模且頻繁的請求,網站可能會直接登入驗證,驗證碼,甚至直接把IP給封禁掉。
那麼為了防止這種情況的發生,我們就需要設定代理來解決這個問題,在 Requests 中需要用到 proxies 這個引數。
可以用這樣的方式設定:
import requests
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
requests.get('https://www.taobao.com', proxies=proxies)
除了基本的 HTTP 代理,Requests 還支援 SOCKS 協議的代理。
超時設定
import requests
r = requests.get('https://www.taobao.com', timeout=1)
print(r.status_code)
上面的設定 timeout 值將會用作 connect 和 read 二者的 timeout 總和。
如果要分別指定,就可以傳入一個元組:
import requests
r = requests.get('https://www.taobao.com', timeout=(5,10))
print(r.status_code)
如果想永久等待,那麼我們可以直接將 timeout 設定為 None,或者不設定直接留空,因為預設是 None。這樣的話,如果伺服器還在執行,但是響應特別慢,那就慢慢等吧,它永遠不會返回超時錯誤的。
用法如下:
import requests
r = requests.get('https://www.taobao.com', timeout=none)
print(r.status_code)
import requests
r = requests.get('https://www.taobao.com')
print(r.status_code)
身份認證
import requests
from requests.auth import HTTPBasicAuth
r = requests.get('http://localhost:5000', auth=HTTPBasicAuth('username', 'password'))
print(r.status_code)
簡單寫法
import requests
r = requests.get('http://localhost:5000', auth=('username', 'password'))
print(r.status_code)
Prepared Request
from requests import Request, Session
url = 'http://httpbin.org/post'
data = {
'name': 'germey'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
s = Session()
req = Request('POST', url, data=data, headers=headers)
prepped = s.prepare_request(req)
r = s.send(prepped)
print(r.text)
更多高階用法請參考官方文件http://docs.python-requests.org/
相關文章
- python爬蟲常用庫之requests詳解Python爬蟲
- 爬蟲之requests庫爬蟲
- 【機器學習】--Python機器學習庫之Numpy機器學習Python
- Python----Requests庫基本使用Python
- Python學習手冊之控制結構(二)Python
- Python學習:用requests-html抓彩票資料PythonHTML
- Python3安裝requests庫Python
- Python HTTP庫:requests快速入門PythonHTTP
- 引數匹配模型——Python學習之引數(二)模型Python
- Python—Requests庫的爬取效能分析Python
- python requests庫 響應中文亂碼Python
- Python爬蟲神器requests庫的使用Python爬蟲
- requests庫
- python學習筆記(二)Python筆記
- InnoDB學習(二)之ChangeBuffer
- Python 爬蟲實戰(二):使用 requests-htmlPython爬蟲HTML
- 學Python需要學資料庫嗎?Python學習教程!Python資料庫
- Python學習筆記|Python之程式Python筆記
- python學習之數字Python
- python學習之運算子Python
- Python 學習之元組Python
- Python學習之共享引用Python
- Python學習之set集合Python
- Python學習之正則Python
- Python學習之函式Python函式
- Python學習之模組Python
- [寒假學習筆記](二)Python初學筆記Python
- python+requestsPython
- Python Requets庫學習總結Python
- Python學習筆記——turtle庫Python筆記
- Python 客戶端類庫之paho-mqtt學習總結Python客戶端MQQT
- Python機器學習會應用到哪些庫?Python入門學習Python機器學習
- python爬蟲js逆向學習(二)Python爬蟲JS
- python機器學習實戰(二)Python機器學習
- python爬蟲學習筆記(二)Python爬蟲筆記
- 使用Python和requests庫的簡單爬蟲程式Python爬蟲
- Python2爬蟲利器:requests庫的基本用法Python爬蟲
- Python學習筆記|Python之yield理解Python筆記