Python中requests模塊的核心使用(1)

簡(jiǎn)介:

requests模塊的底層實(shí)現(xiàn)其實(shí)還是urllib,但是urllib并不常用

requests庫(kù)簡(jiǎn)單易用

快速上手

http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

常用屬性

import requests

url = "http://www.baidu.com"

response = requests.get(url)

print(response.url)

print(response.status_code)

print(response.headers)

print(response.request.headers)

運(yùn)行結(jié)果

運(yùn)行結(jié)果

解釋:

response.url:顧名思義,即請(qǐng)求的url地址

response.status_code:即響應(yīng)的狀態(tài)碼

response.headers:響應(yīng)頭

response.requests.headers:響應(yīng)對(duì)應(yīng)的請(qǐng)求頭,即我們?cè)谡?qǐng)求時(shí)帶的請(qǐng)求頭,簡(jiǎn)單來(lái)說就是瀏覽器識(shí)別的我們?cè)L問其網(wǎng)站帶有的請(qǐng)求頭,這里以請(qǐng)求百度為例,很明顯,這里的'User-Agent': 'python-requests/2.19.1',其實(shí)就是告訴訪問的url,我是python的requests訪問的。

print(response.content.decode())

response.content.decode():獲取網(wǎng)頁(yè)源碼

案例:獲取百度首頁(yè)的百度圖片

第一步:

百度首頁(yè)

首先在百度首頁(yè)的百度logo圖片上點(diǎn)擊鼠標(biāo)右鍵,點(diǎn)擊檢查,或者按鍵盤上的F12,

image.png

找到這個(gè)logo的圖片的src,即鏈接地址:

//www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png?where=super

import requests

url = "http://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png?where=super"

response = requests.get(url)

with open("baidu.png", "wb") as f:

    f.write(response.content)

完整代碼如上,得到結(jié)果在當(dāng)前的目錄,即在當(dāng)前目錄即可以看到baidu.png這張圖片了

發(fā)送帶headers的請(qǐng)求

還記得剛才描述的headers的內(nèi)容嗎?

response.requests.headers:響應(yīng)對(duì)應(yīng)的請(qǐng)求頭,即我們?cè)谡?qǐng)求時(shí)帶的請(qǐng)求頭,簡(jiǎn)單來(lái)說就是瀏覽器識(shí)別的我們?cè)L問其網(wǎng)站帶有的請(qǐng)求頭,這里以請(qǐng)求百度為例,很明顯,這里的'User-Agent': 'python-requests/2.19.1',其實(shí)就是告訴訪問的url,我是python的requests訪問的。

在這種情況下,瀏覽器是知道我們是爬蟲在瀏覽,那么長(zhǎng)期這么操作會(huì)導(dǎo)致該網(wǎng)站對(duì)IP進(jìn)行封鎖,尤其是短時(shí)間內(nèi)訪問量非常大的情況下,那么這個(gè)時(shí)候我們就需要對(duì)寫的爬蟲進(jìn)行headers偽裝

怎么找到headers呢?

image.png

在瀏覽器控制臺(tái)中,找到Network,如果Network里什么都沒有,點(diǎn)擊瀏覽器的刷新,或者按F5刷新,即可出現(xiàn)內(nèi)容,在內(nèi)容中點(diǎn)擊左邊的第一個(gè)或者其他的都行,只要會(huì)出現(xiàn)這樣的headers就可以,我們可以在這里面找到User-Agent,將User-Agent后面的內(nèi)容復(fù)制出來(lái),放到我們構(gòu)造的headers里面。

把它構(gòu)造成字典的形式,即:

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
}

完整代碼如下:

import requests

url = "http://www.baidu.com"

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
}

response = requests.get(url, headers=headers)

print(len(response.content))

感興趣的小伙伴可以對(duì)比一下,帶有headers的請(qǐng)求和沒有帶有headers的請(qǐng)求的區(qū)別,這個(gè)代碼可以看到請(qǐng)求來(lái)的內(nèi)容的總字節(jié)數(shù),可以對(duì)比字節(jié)數(shù)是否一致,帶headers的請(qǐng)求到的數(shù)據(jù)是否比不帶headers的請(qǐng)求,請(qǐng)求到的數(shù)據(jù)要多?

這就是簡(jiǎn)單的requests的請(qǐng)求


個(gè)人博客地址:www.limiao.tech

WX公眾號(hào):TechBoard

不斷更新,歡迎大家的加入

最后編輯于
?著作權(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,525評(píng)論 19 139
  • Requests 是用Python語(yǔ)言編寫,基于 urllib,采用 Apache2 Licensed 開源協(xié)議的...
    朝畫夕拾閱讀 1,252評(píng)論 2 4
  • 方案一:class文件都是二進(jìn)制的。首先用vi 打開然后輸入%!xxd顯示其16進(jìn)制格式 方案二:javap -v...
    canezk閱讀 355評(píng)論 0 0
  • 錦瑟流年(目錄) 這么一大隊(duì)人馬,在這場(chǎng)突而其來(lái)的變故中,不見一點(diǎn)慌張,整然有序的停了下來(lái)。 為首的華服男子,靜靜...
    玉樓人醉閱讀 1,363評(píng)論 1 5
  • 從小生在農(nóng)村,老老少少一口秦腔,也覺得這說法就是哪里都這樣說,沒什么不妥。直到從收音機(jī)里傳出另一種聲音,半懂不懂,...
    wjshw閱讀 393評(píng)論 2 2

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