requests的post登錄
#基于POST請求
import requests
import json
data = {'name':'boy','age':'21'}
response = requests.post("http://httpbin.org/post",data=data)
print(response.text)
#加headers
data = {'name':'boy','age':'21'}
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36"
}
response2 = requests.post("http://httpbin.org/post",data=data,headers=headers)
print(response2.json())
#響應response屬性
import requests
response3 = requests.get("http://www.lxweimin.com")
print(type(response3.status_code),response3.status_code)
print(type(response3.headers),response3.headers)
print(type(response3.cookies),response3.cookies)
print(type(response3.url),response3.url)
print(type(response3.history),response3.history)
#狀態嗎判斷:
response4 = requests.get("http://www.lxweimin.com")
exit() if not response4.status_code == 200 else print("Request Success")
#高級操作
#1、文件上傳
files = {'file':open('favicon.ico','rb')}
response5 = requests.post("http://httpbin.org/post",files=files)
print(response5.text)
#獲取cookie
response6 = requests.get("http://www.baidu.com")
print(response6.cookies)
for key,value in response6.cookies.items():
print(key + '=' +value)
#會話維持嗎、用來模擬登錄
"""
同一瀏覽器中要實現set get,這時需要用到requests里的Session對象
用session 對象發起兩次get請求,先訪問se 在訪問get 這時就相當于在一個瀏覽器中發起兩次請求
模擬了一次對話,做模擬登錄時適用
"""
s = requests.Session()
s.get("http://httpbin.org/cookies/set/number/123445")
response7 = s.get("http://httpbin.org/cookies")
print(response7.text)
#證書驗證
"""
verify = False用來驗證是否需要驗證證書,不添加的話會報錯,添加上不會報錯但是有一個警告
消除警告信息,導入包from requests.packages import urllib3使用urllib3.disable_warnings()方法
"""
from requests.packages import urllib3
urllib3.disable_warnings()
response8 = requests.get("https://www.12306.cn",verify = False)
print(response8.status_code)
手動消除,
requests.get(,cert=("https://www.12306.cn",'/path/client.cert','/path/client.key'))
s = requests.Session()
s.cert = '/path/client.cert'
#設置代理,如果ip代理有密碼則,需要傳入用戶名和密碼,http://user:password@q27.0.0.1:8080/
proxies = {
"http":"http://61.91.52.86:8080",
"http":"http://183.30.197.17:9797"
}
response9 = requests.get("http://httpbin.org",proxies=proxies)
print(response9.text)
#如果使用的是socks代理則需要修改后邊的5是socks提供
"""
proxies = {
"http":"socks5://61.91.52.86:8080",
"http":"socks5://183.30.197.17:9797"
}
"""
#超時設置,限制服務器應答速度
from requests.exceptions import ReadTimeout
try :
response10 = requests.get("http://httpbin.org",timeout=2)
print(response10.status_code)
except ReadTimeout:
print("timeout")
#認證設置 需要輸入用戶名和密碼
from requests.auth import HTTPBasicAuth
response10 = requests.get("http://httpbin.org",auth=HTTPBasicAuth('user','passwd'))
#異常處理
from requests.exceptions import
ReadTimeout,HTTPError,RequestException
try:
response11 = requests.get("http://httpbin.org/get",timeout=0.5)
except ReadTimeout:
print('Timeout')
except HTTPError:
print('http error')
except RequestException:
print('Error')