Requests
Requests 繼承了urllib的所有特性,並且API使用更加方便,可以簡化我們的代碼
- 如何使用Requests
GET
- 1 導入
import requests
- 2 發起請求
url = '目標url地址'
# 設置請求頭
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
#發起請求 接收響應
response = requests.get(url=url,params=None,headers=headers,verify=False)
requests請求參數
method: 設置請求方式 get、post、delete
url: 目標url
params: 跟的是get請求url地址後?後面拼接的參數
data: (optional) Dictionary, post請求的參數.
headers: (optional) Dictionary 設置請求頭.
cookies: (optional) Dict or CookieJar object 設置用戶的cookies信息.
files: (optional) Dictionary 文件上傳(post).
auth: Auth 認證.
timeout: 設置請求的超時時間
allow_redirects: 設置是否允許重定向,默認是允許的
proxies: (optional) Dictionary 設置代理.
verify: (optional) Either a boolean, Defaults toTrue
.
#忽略證書認證,則設置爲False
響應結果
response.text > 頁面源碼
response.status_code > 響應狀態碼
response.headers > 響應頭
response.request.headers > 獲取請求頭
response.content > 獲取頁面的二進制數據
POST
- 1 設置表單參數
form_data = {
'username':'......',
'password':'......',
}
- 發起請求
url = '目標url地址'
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = requests.post(url=url,data=form_data,headers=headers)
#------如果是json數據可以調用json方法,將json字符串轉換爲python數據類型------
response.json()['key']
- 文件上傳
#測試url
url = 'https://httpbin.org/post'
#讀取本地文件
files = {'file':open('page.html','r',encoding='gbk')}
response = requests.post(url=url,files=files,headers=headers)
if response.status_code == 200:
print('文件上傳成功')
print(response.text)
- 獲取cookies
# response : 頁面響應結果
cookies = response.cookies
# 將cookie存在字典中
cookies_dict = {}
for cookie in cookies:
cookies_dict[cookie.name] = cookie.value
# print(cookie.name,cookie.value)
print(cookies_dict)
#dict_from_cookiejar:把RequestsCookieJar對象轉成字典
cookies_dict2 = requests.utils.dict_from_cookiejar(cookies)
print(cookies_dict2)
####設置cookies##########
#方式一:從瀏覽器獲取cookies,放在請求的頭部
#方式二,通過設置請求的cookies參數,
#cookies: (optional) Dict or CookieJar object
response = requests.get(
url=url,headers=headers,
cookies=cookies_dict2
)
print(response.status_code)
print('設置cookies後的請求頭部',response.headers)
- session
- 在requests請求中,我們往往需要讓上下請求保持聯繫,這時我們就需要使用session
#實例化session()對象
session = requests.session()
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = session.get('http://www.baidu.com/',headers=headers)
print(response.headers)
print(session.cookies) #session.cookies 保存的是服務器,返回的cookies信息
#當session.cookies有用戶信息之後,我們再使用session.get()或者session.post()
#發起請求時,就會自動攜帶cookies等信息
response = session.get('http://www.baidu.com/',headers=headers)
# 一般情況下,我們會再模擬登錄時用到request.session,先完成登錄,
# 然後使用session發起請求
- 設置代理
proxies = {
'http':'代理',
'http':'代理',
}
#proxies(設置代理參數): (optional) Dictionary
response = requests.get(url=url,params=None,
headers=headers,
proxies=proxies)