爬蟲進(jìn)階《requests 模塊學(xué)習(xí)》

使用 Requests 發(fā)送網(wǎng)絡(luò)請(qǐng)求非常簡(jiǎn)單。

一開始要導(dǎo)入 Requests 模塊:

import requests

然后,嘗試獲取某個(gè)網(wǎng)頁

r = requests.get('https://github.com/timeline.json')

現(xiàn)在,我們有一個(gè)名為 rResponse 對(duì)象。我們可以從這個(gè)對(duì)象中獲取所有我們想要的信息。

Requests 簡(jiǎn)便的 API 意味著所有 HTTP 請(qǐng)求類型都是顯而易見的。例如,你可以這樣發(fā)送一個(gè) HTTP POST 請(qǐng)求:

r = requests.post("http://httpbin.org/post")

put delete head都相似

>>> r = requests.put("http://httpbin.org/put")
>>> r = requests.delete("http://httpbin.org/delete")
>>> r = requests.head("http://httpbin.org/get")
>>> r = requests.options("http://httpbin.org/get")

服務(wù)器響應(yīng)內(nèi)容

import requests
r = requests.get('https://movie.douban.com/review/best')
r.text
圖片.png

Requests 會(huì)自動(dòng)解碼來自服務(wù)器的內(nèi)容。大多數(shù) unicode 字符集都能被無縫地解碼。
不需要像urlli.request模塊使用的時(shí)候 需要將utf-8轉(zhuǎn)碼 在requests 模塊中使用r.txt
自動(dòng)轉(zhuǎn)碼

定制請(qǐng)求頭

如果你想為請(qǐng)求添加 HTTP 頭部,只要簡(jiǎn)單地傳遞一個(gè) dict 給 headers 參數(shù)就可以了。

例如,在前一個(gè)示例中我們沒有指定 content-type:

url = 'https://movie.douban.com/review/best/'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)

注意: 定制 header 的優(yōu)先級(jí)低于某些特定的信息源,例如:

如果在 .netrc 中設(shè)置了用戶認(rèn)證信息,使用 headers= 設(shè)置的授權(quán)就不會(huì)生效。而如果設(shè)置了 auth= 參數(shù),.netrc 的設(shè)置就無效了。
如果被重定向到別的主機(jī),授權(quán) header 就會(huì)被刪除。
代理授權(quán) header 會(huì)被 URL 中提供的代理身份覆蓋掉。
在我們能判斷內(nèi)容長(zhǎng)度的情況下,header 的 Content-Length 會(huì)被改寫。
更進(jìn)一步講,Requests 不會(huì)基于定制 header 的具體情況改變自己的行為。只不過在最后的請(qǐng)求中,所有的 header 信息都會(huì)被傳遞進(jìn)去。

注意: 所有的 header 值必須是 string、bytestring 或者 unicode。盡管傳遞 unicode header 也是允許的,但不建議這樣做。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • Requests模塊 發(fā)送請(qǐng)求使用 Requests 發(fā)送網(wǎng)絡(luò)請(qǐng)求非常簡(jiǎn)單。 一開始要導(dǎo)入 Requests 模塊...
    Arvin__閱讀 4,329評(píng)論 4 17
  • 1.發(fā)送請(qǐng)求: import requests # 獲取數(shù)據(jù) #r是一個(gè) response 對(duì)象。包含請(qǐng)求返回的內(nèi)...
    阿爾卑斯山上的小灰兔閱讀 1,466評(píng)論 0 3
  • S 時(shí)間煮過的情話。 你用雨來回答, 我聽著鐘表在嘀嗒,嘀嗒, 你笑著問我,過的啊,好嗎? 我翻著記在心里的號(hào)碼,...
    泗字閱讀 246評(píng)論 0 3

友情鏈接更多精彩內(nèi)容