python的request使用方法


一、requests的常用方法使用樣式

1.requests.get(url, params=None, **kwargs)

向HTML網頁提交GET請求的方法,對應於HTTP的POST

 

2.requests.post(url, data=None, json=None, **kwargs)

向HTML網頁提交POST請求的方法,對應於HTTP的POST

 

3.requests.request(method, url, **kwargs)

構造一個請求,支撐一下各方法的基礎方法

 

4.requests.head(url, **kwargs)

獲取HTML網頁頭信息的方法,對應於HTTP的HEAD

 

5.**kwargs:控制訪問的參數,均為可選項,共13個

1)params字典或字節序列,作為參數增加到url中

kv = {'key1':'value1','key2':'value2'} r = requests.request('GET','http://www.baidu.com',params=kv)

2)data字典、字節序列或文件對象,作為Request的對象

kv = {'key1':'value1','key2':'value2'} r = requests.request('POST','http://www.baidu.com',data=kv)

3)jsonJSON格式的數據,作為Request的內容

kv = {'key1':'value1','key2':'value2'} r = requests.request('POST','http://www.baidu.com',json=kv)

4)headers字典,HTTP定制頭

hd = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"} r = requests.request('POST','http://www.baidu.com',headers=hd)

5)cookies字典或CookieJar,Request中的cookie
6)auth元組,支持HTTP認證功能
7)files字典類型,傳輸文件

fs = {'file':open('data.xls','rb')} r = requests.request('POST','http://www.baidu.com',files=fs)

8)timeout設定超時時間,秒為單位

r = requests.request('GET','http://www.baidu.com',timeout=10)

9)proxies字典類型,設置訪問代理服務器,可以增加登錄認證

pxs = {'http':'http://user:pass@10.10.10.1:1523'} r = requests.request('GET','http://www.baidu.com',proxies=pxs)

10)allow_redirectsTrue/False,默認為Ture,重定向開關
11)streamTrue/False,默認為True,獲取內容立即下載開關
12)verifyTrue/False,默認為True,認證SSL證書開關
13)cert本地SSL證書路徑

 

6.請求會話

在很多時候我們開發的爬蟲需要登錄,登錄后我們需要記錄登錄狀態,否則無法爬取登錄后才能爬取的網頁,在request中提供了requests.Session()這樣的類:

import requests s = requests.Session() s.get('http://httpbin.org/get')

這樣我們的request只要調用一次登錄入口就會自動維護網站的Session記錄我們的登錄狀態,以后我們可以直接使用request訪問登錄才能訪問的頁面。

 

 7.Cookie獲取

我們可以使用cookies來獲取響應中的cookie: 如果某個響應中包含一些 cookie,你可以快速訪問它們:

req = requests.get("https://ptorch.com") req = requests.get("https://ptorch.com") print(req.cookies) print(req.cookies['laravel_session'])

要想發送你的cookies到服務器,可以使用cookies參數:

cookies = dict(cookies_are='working Test') req = requests.get("http://httpbin.org/cookies", cookies=cookies) print(req.text) # '{"cookies": {"cookies_are": "working Test"}}'

Cookie的返回對象為RequestsCookieJar,它的行為和字典類似,但界面更為完整,適合跨域名跨路徑使用。你還可以把Cookie Jar傳到Requests中:

jar = requests.cookies.RequestsCookieJar() jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies') jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere') url = 'http://httpbin.org/cookies' req = requests.get(url, cookies=jar) print(req.text) # '{"cookies": {"tasty_cookie": "yum"}}'

保存cookie方便下次訪問,我們需要將CookieJar轉為字典或者將字典轉為CookieJar

#將CookieJar轉為字典:
cookies = requests.utils.dict_from_cookiejar(r.cookies) #將字典轉為CookieJar:
ookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)

 

8.下載圖片

有時候我們想下載我們爬取頁面的img圖片,你可以使用requests請求圖片,獲取response.content文本信息,實際上獲取的是圖片的二進制文本,然后保存即可:

import requests response = requests.get("https://ptorch.com/img/logo.png") img = response.content open('logo.jpg', 'wb').write(response.content)

如果要下載驗證碼,可以使用上面的會話請求加載這里的下載代碼即可。

 

二、獲取Request響應

1.response對象的屬性

1)r.status_code

HTTP請求的返回狀態,200表示連接成功,404表示失敗
2)r.text

HTTP響應內容的字符串形式,即,url對應的頁面內容
3)r.encoding

從HTTP header中猜測的響應內容編碼方式
4)r.apparent_encoding

從內容分析出的響應內容編碼方式(備選編碼方式)
5)r.content

HTTP響應內容的二進制形式

 

2.理解Response的編碼
1)r.encoding

從HTTP header中猜測的響應內容編碼方式

如果header中不存在charset,則認為編碼為ISO-8859-1
2)r.apparent_encoding

從內容中分析出的響應內容編碼方式(備選編碼方式)

根據網頁內容分析出的編碼方式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM