《Python網(wǎng)絡(luò)爬蟲》1.4 Requests庫方法詳細(xì)介紹

By 一頁編程


下面我們介紹一下requests庫主要方法,并且對這些方法進(jìn)行解析磕秤。
Requests庫與HTTP協(xié)議的方法乳乌,功能是一一對應(yīng)的,包括以下7個(gè)方法:

方法 說明
requests.request() 構(gòu)造一個(gè)請求市咆,支撐以下各方法的基礎(chǔ)方法
requests.get() 獲取HTML網(wǎng)頁的主要方法汉操,對應(yīng)HTTP協(xié)議的GET
requests.head() 獲取HTML網(wǎng)頁頭信息的方法,對應(yīng)HTTP協(xié)議的HEAD
requests.post() 向HTML網(wǎng)頁提交POST請求的方法蒙兰,對應(yīng)HTTP協(xié)議的POST
requests.put() 向HTML網(wǎng)頁提交PUT請求的方法磷瘤,對應(yīng)HTTP協(xié)議的PUT
requests.patch 向HTML網(wǎng)頁提交局部修改,對應(yīng)HTTP協(xié)議的PATCH
requests.delete() 向HTML網(wǎng)頁提交刪除請求的方法搜变,對應(yīng)HTTP協(xié)議的DELETE

requests.request()方法

requests庫的request方法是所有方法的基礎(chǔ)方法采缚,它有3個(gè)參數(shù):

request(method, url, **kwargs)
  • method:通過request()實(shí)現(xiàn)的請求方式,它分別對應(yīng)get挠他、post扳抽、put等7種方法。
  • url:獲取頁面鏈接殖侵。
  • kwargs:控制訪問參數(shù)贸呢,一共有13個(gè)。

請求方式

r = requests.request('GET', url, **kwargs)
r = requests.request('HEAD', url, **kwargs)
r = requests.request('POST', url, **kwargs)
r = requests.request('PUT', url, **kwargs)
r = requests.request('PATCH', url, **kwargs)
r = requests.request('DELETE', url, **kwargs)
r = requests.request('OPTIONS', url, **kwargs)

其中前6種大家看到這些已經(jīng)非常清楚拢军,它們就是HTTP協(xié)議所對應(yīng)的請求功能楞陷,我們都已經(jīng)介紹過了。而options事實(shí)上是向服務(wù)器獲取一些服務(wù)器跟客戶端能夠打交道的參數(shù)茉唉,這里邊并不與獲取資源直接相關(guān)固蛾,因此,我們在平時(shí)使用中用的比較少度陆。
在這7種方式中艾凯,我們除了直接使用request()方法之外,還可以使用requests庫的對應(yīng)方法懂傀。比如說趾诗,requests.get()requests.head()鸿竖、requests.post()來實(shí)現(xiàn)沧竟。

訪問控制參數(shù)

URL我們大家都知道它是鏈接,我們不多說了缚忧,那么request()的13個(gè)訪問控制的參數(shù)分別是什么呢悟泵?我們一一介紹一下。

  • params

params指能夠增加到url中的參數(shù)闪水,這個(gè)怎么理解呢糕非?我們看一個(gè)例子:

>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('GET', 'http://python123.io/ws', params = kv)
>>> print(r.url)
http://python123.io/ws?key1=value1&key2=value2
>>> 

我們發(fā)現(xiàn),在我們給定的url中球榆,它的后面多了一個(gè)問號朽肥,問號后面有key1=value1,&key2=value2。也就是說持钉,通過這樣一個(gè)參數(shù)衡招,我們可以把一些鍵值對增加到url中,那么使得url再去訪問時(shí)每强,不止訪問的是這個(gè)資源始腾,而同時(shí)代入了一些參數(shù),那服務(wù)器呢空执?可以接受這些參數(shù)浪箭,并根據(jù)這些參數(shù)篩選部分資源返回回來。
后面辨绊,我們會有例子重點(diǎn)介紹這個(gè)參數(shù)的使用奶栖。

  • data

第二個(gè)要介紹的訪問控制參數(shù)是data,它可以是字典门坷、字節(jié)序列或文件對象宣鄙。重點(diǎn)是作為向服務(wù)器提供或提交資源時(shí)使用“莺祝看下面的代碼:

>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('GET', 'http://python123.io/ws', data = kv)
>>> body = '主題內(nèi)容'
>>> r = requests.request('GET', 'http://python123.io/ws', data = body)

使用data參數(shù)的時(shí)候框冀,我們所提交的鍵值對,對并不放在url鏈接里敏簿,而是放在url鏈接對應(yīng)位置的地方明也,作為數(shù)據(jù)來存儲。我們當(dāng)然也可以像data賦值一個(gè)字符串惯裕,那么這個(gè)字符串就會存到前面的url鏈接所對應(yīng)的位置温数。

  • json

大家看到名字就能想到他是json格式的數(shù)據(jù)。json格式蜻势,在http撑刺、html相關(guān)的外部開發(fā)中用到的非常常見,也是http協(xié)議使用的最經(jīng)常使用的數(shù)據(jù)格式握玛,那么它也是作為內(nèi)容部分可以向服務(wù)器提交够傍,比如說我們用字典構(gòu)造一個(gè)鍵值對甫菠,然后呢,我們可以把它復(fù)制給json參數(shù)冕屯,那么這個(gè)鍵值對就復(fù)制到服務(wù)器的json里面寂诱。

>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('POST', 'http://python123.io/ws', json= kv)
  • headers

headers實(shí)際上是http頭的相關(guān)語句,它對應(yīng)了向某一個(gè)url訪問時(shí)所發(fā)起的http的頭字段安聘,簡單說痰洒,我們可以用這個(gè)字段來定制訪問某一個(gè)url的http的協(xié)議頭,舉個(gè)例子:

>>> hd = {'user-agent': 'Chrome/10'}
>>> r = requests.request('POST', 'http://python123.io/ws', headers = hd)
>>> 

我們把user-agent變?yōu)?code>Chrome/10浴韭,那么在訪問某一個(gè)鏈接時(shí)丘喻,我們可以把這樣的字段賦給headers,此時(shí)headers再去向服務(wù)器訪問時(shí)服務(wù)器看到的user-agent字段就是Chrome/10念颈。那Chrome/10是什么呢泉粉?他是指Chrome瀏覽器的第十個(gè)版本,也就是說我們可以模擬任何我們想模擬的瀏覽器向服務(wù)器發(fā)起訪問榴芳,而這種模擬瀏覽器的方法就是在headers字段中來實(shí)現(xiàn)搀继。
后面,我們有例子來去介紹這個(gè)字段的具體使用翠语。

  • cookies 和 auth

cookies和auth都是requests庫的高級功能叽躯。
cookies指的是從http協(xié)議中解析cookie, 它可以是字典肌括,也可以是CookieJar形式点骑。
auth字段是一個(gè)元組類型,它是支持http認(rèn)證功能的谍夭。

  • files

顧名思義黑滴,它是向服務(wù)器傳輸文件時(shí)使用的字段。我們可以定義一個(gè)字典紧索,用File袁辈,以對應(yīng)的文件為鍵值對,用open的方式打開這個(gè)文件珠漂,并把這個(gè)文件與files做一個(gè)關(guān)聯(lián)晚缩,同時(shí)對應(yīng)到相關(guān)的url上。通過這樣的方法媳危,我們可以向某一個(gè)鏈接提交某一個(gè)文件荞彼,這個(gè)在特定應(yīng)用時(shí)還是非常有用的。

>>> fs = {'file': open('data.txt', 'rb')}
>>> r = requests.request('POST', 'http://python123.io/ws', files= fs)
>>> 
  • timeout

Timeout設(shè)定的超時(shí)時(shí)間待笑,以秒為單位鸣皂。當(dāng)我們發(fā)起一個(gè)get請求時(shí),我們可以設(shè)一個(gè)timeout時(shí)間,如果在timeout時(shí)間內(nèi)寞缝,我們的請求內(nèi)容沒有反饋回來癌压,那么它將產(chǎn)生一個(gè)timeout的異常。

>>> r = requests.request('POST', 'http://python123.io/ws', timeout= 10)
>>> 
  • proxies

Proxies字段荆陆,他是一個(gè)字典類型措拇,可以為我們爬取網(wǎng)頁,設(shè)定相關(guān)的訪問代理服務(wù)器慎宾。這里我們增加兩個(gè)代理:

>>> pxs = {'http': 'http://user:pass@10.10.10.10:1234'
              'https': 'https://10.10.10.10:4321'
>>> r = requests.request('GET', 'http://www.baidu.com', proxies= pxs)
>>> 

第一個(gè)是http訪問時(shí)使用的代理,在這代理中浅悉,我們可以增加用戶名跟密碼的設(shè)置趟据。后面是一個(gè)https的代理服務(wù)器,這樣我們在訪問百度時(shí)的ip地址术健,就是代理服務(wù)器的ip地址汹碱。使用這個(gè)字段可以有效的隱藏用戶爬取網(wǎng)頁的源的ip地址信息,能夠有效地防止對爬蟲的逆追蹤荞估。

  • allow_redirects 和 stream

這兩個(gè)字段都是開關(guān)字段咳促。
allow_redirects表示允不允許對url進(jìn)行重定向。
stream指對獲取的內(nèi)容是否進(jìn)行立即下載勘伺,默認(rèn)情況是立即下載跪腹。

  • verify 和 cert

verify是一個(gè)認(rèn)證ssl證書的字段。
cert是保存本地ssl證書路徑的字段飞醉。

其他方法

requests.get(url, params=None, **kwargs)
requests.head(url, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.delete(url, **kwargs)

在使用這6個(gè)方法的時(shí)候冲茸,由于這些方法會常用到某一些訪問控制參數(shù),所以就把這樣的參數(shù)作為一個(gè)顯示定義的參數(shù)量放到了函數(shù)的設(shè)計(jì)里邊缅帘,而那些不是特別常用的都放在了訪問控制可選的參數(shù)字段里邊轴术。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钦无,隨后出現(xiàn)的幾起案子逗栽,更是在濱河造成了極大的恐慌,老刑警劉巖失暂,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彼宠,死亡現(xiàn)場離奇詭異,居然都是意外死亡弟塞,警方通過查閱死者的電腦和手機(jī)兵志,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宣肚,“玉大人想罕,你說我怎么就攤上這事。” “怎么了按价?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵惭适,是天一觀的道長。 經(jīng)常有香客問我楼镐,道長癞志,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任框产,我火速辦了婚禮凄杯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秉宿。我一直安慰自己戒突,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布描睦。 她就那樣靜靜地躺著膊存,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忱叭。 梳的紋絲不亂的頭發(fā)上隔崎,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音韵丑,去河邊找鬼爵卒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛撵彻,可吹牛的內(nèi)容都是我干的技潘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼千康,長吁一口氣:“原來是場噩夢啊……” “哼享幽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拾弃,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤值桩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后豪椿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奔坟,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年搭盾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咳秉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸯隅,死狀恐怖澜建,靈堂內(nèi)的尸體忽然破棺而出向挖,到底是詐尸還是另有隱情,我是刑警寧澤炕舵,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布何之,位于F島的核電站,受9級特大地震影響咽筋,放射性物質(zhì)發(fā)生泄漏溶推。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一奸攻、第九天 我趴在偏房一處隱蔽的房頂上張望蒜危。 院中可真熱鬧,春花似錦睹耐、人聲如沸辐赞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至略就,卻和暖如春捎迫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背表牢。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工窄绒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崔兴。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓彰导,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敲茄。 傳聞我的和親對象是個(gè)殘疾皇子位谋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)堰燎,斷路器掏父,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 網(wǎng)絡(luò)爬蟲就是提取網(wǎng)頁的信息。網(wǎng)絡(luò)爬蟲的原則就是謹(jǐn)記“the website is API”,就是我們所面對的對象和...
    六尺帳篷閱讀 2,529評論 0 18
  • Request庫安裝方法 Request官網(wǎng) 使用管理員權(quán)限啟動 command控制臺(win+X 命令提示符(管...
    天道酬勤_FUN閱讀 36,390評論 0 35
  • 聲明:本文講解的實(shí)戰(zhàn)內(nèi)容秆剪,均僅用于學(xué)習(xí)交流赊淑,請勿用于任何商業(yè)用途! 一仅讽、前言 強(qiáng)烈建議:請?jiān)陔娔X的陪同下陶缺,閱讀本文...
    Bruce_Szh閱讀 12,704評論 6 28
  • 昨天,我們更多的討論了request的基礎(chǔ)API洁灵,讓我們對它有了基礎(chǔ)的認(rèn)知饱岸。學(xué)會上一課程,我們已經(jīng)能寫點(diǎn)基本的爬蟲...
    阿爾卑斯山上的小灰兔閱讀 12,278評論 1 8