使用requests的相關方法操作
import requests
response = requests.get('https://www.baidu.com')
print(type(response))
print(response.status_code)
print(type(response.text))
print(response.cookies)
各種請求方式
帶參數的GET請求
import requests
print(response.text)
構造GET請求參數
import requests
data = {
'name':'gg',
'age':18
}
response = requests.get('http://httpbin.org/get",params = data)
print(response.text)
解析JSON
import requests
import json
response = requests.get('http://httpbin.org/get')
print(type(response.text))
print(response.json())
print(type(response.json()))
擷取二進制資料并寫入檔案
import requests
with open('d:\\favicon.ico','wb') as f:
f.write(response.content)
f.close()
帶有headers的POST請求
import requests
headers = {
'User-Agent':'Ruby'
}
data = {'name':'gg','age':'18'}
response = requests.post('http://httpbin.org/post',data=data,headers=headers)
print(response.text)
響應部分
response 屬性
response.status_code
response.headers
response.cookies
response.url
response.history
requests 的進階操作
檔案上傳
import reqeusts
files = {'file':open('d:\\favicon.ico','rb)}
response = requests.post('http://httpbin.org/post',files=files)
print(response.text)
擷取Cookie
import requests
response = requests.get('https://www.baidu.com')
print(response.cookies)
for key,value in response.cookies.items():
print(key + '=' + value)
會話維持 模拟登陸
使用session對象
import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
response = s.get('http://httpbin.org/cookies')
print(response.text)
證書驗證
requests打開https的時候,判斷證書是否是合法的,如果證書是非法的,那麼我們使用正常的方法是無法通路的
使用證書 使用指定證書和密鑰
import requests
response = requests.get('https://123456789.com,cert=('/path/server.crt','/path/key'))
print(requests.status_code)
有關于代理的使用
單一代理設定
import requests
proxies = {
}
response = requests.get('https://www.google.com',proxies=proxies)
print(response.status_code)
帶使用者名密碼的代理設定
import requests
proxies = {
'http':'http://username:[email protected]:9991'
}
response = requests.get('https://www.google.com',proxies=proxies)
print(response.status_code)
使用Socks代理
pip install requests[socks]
import requests
proxies = {
'http':'socks5://127.0.0.1:9992',
'https':'socks5://127.0.0.1:9992'
}
response = requests.get('https://www.google.com',proxies=proxies)
print(response.status_code)
認證設定
對于認證頁面,需要使用認證方式
設定認證值
import requests
from requests.auth import HTTPDigestAuth
r = requests.get('http://192.168.16.1',auth=HTTPDigestAuth('123456','123456'))
print(r.status_code)
異常處理
import requests
from requests.exceptions import ReadTimeout,HTTPError,RequestException
try:
response = requests.get('http://httpbin.org/get',timeout = 0.1)
print(response.status_code)
except ReadTimeout:
print('Time Out!!!')
except HTTPError:
print('HTTP Error!!!')
except RequestException:
print('Error!!!')