requests的簡(jiǎn)單使用
1.最基本的GET請(qǐng)求可以直接用get方法
response = requests.get(url)
- response的常用方法:
response.text 返回解碼后的字符串
respones.content 以字節(jié)形式(二進(jìn)制)返回熬丧。
response.status_code 響應(yīng)狀態(tài)碼
response.request.headers 請(qǐng)求的請(qǐng)求頭
response.headers 響應(yīng)頭
response.encoding = 'utf-8' 可以設(shè)置編碼類型
response.url 查看完整的url地址
response.encoding 獲取當(dāng)前的編碼
response.json() 內(nèi)置的JSON解碼器把曼,以json形式返回,前提返回的內(nèi)容確保是json格式的,不然解析出錯(cuò)會(huì)拋異常
2.添加headsers和查詢參數(shù)
import requests
kw = {'wd':'長(zhǎng)城'}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}
# params 接收一個(gè)字典或者字符串的查詢參數(shù)虱而,
# 字典類型自動(dòng)轉(zhuǎn)換為url編碼,不需要urlencode()
response = requests.get(
"http://www.baidu.com/s?",
params = kw,
headers = headers
)
print(response.text)
基本POST請(qǐng)求(data參數(shù))
1.最基本post方法
response = requests.post(url=url, data = data)
url:post請(qǐng)求的目標(biāo)url
data:post請(qǐng)求的表單數(shù)據(jù)
設(shè)置代理(proxies參數(shù))
如果需要使用代理,你可以通過為任意請(qǐng)求方法提供 proxies 參數(shù)來配置單個(gè)請(qǐng)求:
import requests
# 根據(jù)協(xié)議類型,選擇不同的代理
proxies = {
"http": "http://12.34.56.79:9527",
"https": "http://12.34.56.79:9527",
}
response = requests.get(
"http://www.baidu.com",
proxies = proxies
)
print(response.text)
Cookies
import requests
response = requests.get("https://www.douban.com/")
# 7\. 返回CookieJar對(duì)象:
cookiejar = response.cookies
# 8\. 將CookieJar轉(zhuǎn)為字典:
cookiedict = requests.utils.dict_from_cookiejar(
cookiejar
)
print (cookiejar)
print (cookiedict)
然后可以使用cookidict繼續(xù)發(fā)起請(qǐng)求斑鸦,登錄成功后訪問個(gè)人主頁,能夠成功獲取到個(gè)人主頁信息,說明確實(shí)保存了cookie
session
在 requests 里,session對(duì)象是一個(gè)非常常用的對(duì)象草雕,這個(gè)對(duì)象代表一次用戶會(huì)話:從客戶端瀏覽器連接服務(wù)器開始巷屿,到客戶端瀏覽器與服務(wù)器斷開。
會(huì)話能讓我們?cè)诳缯?qǐng)求時(shí)候保持某些參數(shù)墩虹,比如在同一個(gè) Session 實(shí)例發(fā)出的所有請(qǐng)求之間保持 cookie 嘱巾。
#requests.session(): 維持會(huì)話,可以讓我們?cè)诳缯?qǐng)求時(shí)诫钓,保存某些參數(shù)
import requests
#實(shí)例化session
session = requests.session()
#目標(biāo)url
url = 'https://www.douban.com/accounts/login'
form_data = {
'source': 'index_nav',
'form_email': '18518753265',
'form_password': 'ljh12345678',
'captcha-solution': 'purpose',
'captcha-id': 'TaXhQ6a7ylku0Ylt4WfRbDPe:en'
}
#設(shè)置請(qǐng)求頭
req_header = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
}
#使用session發(fā)起請(qǐng)求
response = session.post(url,data=form_data,headers= req_header)
if response.status_code == 200:
#訪問個(gè)人主頁
url = 'https://www.douban.com/people/175417123/'
response = session.get(url,headers=req_header)
if response.status_code == 200:
with open('douban3.html','w',encoding='utf-8') as file:
file.write(response.text)