两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

        有時(shí)我們發(fā)送的網(wǎng)絡(luò)請(qǐng)求可能會(huì)被服務(wù)器拒絕這可能是該網(wǎng)站設(shè)置了反爬蟲機(jī)制來(lái)防止用戶惡意采集信息,但這不代表我們不能訪問(wèn)該網(wǎng)站,我們可以模擬服務(wù)器的頭部信息去訪問(wèn)。

1. 請(qǐng)求headers處理

        我們首先打開(kāi)我們要訪問(wèn)的網(wǎng)站,然后根據(jù)瀏覽器的打開(kāi)方式進(jìn)入檢查頁(yè)面,例如谷歌瀏覽器可以直接按F12或者Ctrl+Shift+I,進(jìn)入下要頁(yè)面:

 python爬蟲9

        找到document文件并單擊,如下圖頁(yè)面:

 python爬蟲10

        這個(gè)就為我們的頭部信息,也就是我們當(dāng)前訪問(wèn)此網(wǎng)站的用戶信息,我們復(fù)制一下然后開(kāi)始使用它,代碼如下:

import requests
url = 'https://www.baidu.com/'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}#頭部信息
r = requests.get(url,headers = headers)#發(fā)送網(wǎng)絡(luò)請(qǐng)求
print(r.text)#以文本形式輸出網(wǎng)頁(yè)源碼

        輸出為網(wǎng)站的html源碼,如下圖:

 python爬蟲11

        這種方式類似于我們模擬了一個(gè)用戶去訪問(wèn)該網(wǎng)站,等同于手動(dòng)在打開(kāi)瀏覽器去訪問(wèn)。

2. 網(wǎng)絡(luò)超時(shí)

        我們?cè)诎l(fā)送網(wǎng)絡(luò)請(qǐng)求的時(shí)候避免不了超時(shí)現(xiàn)象的發(fā)生,如果我們不設(shè)置一個(gè)超時(shí)時(shí)間,那么系統(tǒng)會(huì)因?yàn)樗L(zhǎng)時(shí)間未響應(yīng)而無(wú)法打開(kāi)網(wǎng)頁(yè)。

        超時(shí)又分為連接超時(shí)讀取超時(shí)。

        連接超時(shí)就是在程序默認(rèn)的等待時(shí)間內(nèi)沒(méi)有得到服務(wù)器的響應(yīng)。

        我們來(lái)看個(gè)例子:

import datetime
import requests
url = 'http://www.google.com.hk'
print(datetime.datetime.now())
try:
    r = requests.get(url, timeout = 5).text
    print('獲得響應(yīng)')
except requests.exceptions.RequestException as s:
    print('連接超時(shí)')
    print(s)
print(datetime.datetime.now())

        輸出結(jié)果為:

2020-02-19 21:09:06.084353
連接超時(shí)
HTTPConnectionPool(host='www.google.com.hk', port=80): Max retries exceeded with url: / 
(Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0383A298>, 
'Connection to www.google.com.hk timed out. (connect timeout=5)'))
2020-02-19 21:09:11.125962

        由于國(guó)內(nèi)的服務(wù)器無(wú)法正常訪問(wèn)谷歌,所以出現(xiàn)連接超時(shí)的現(xiàn)象,其中關(guān)鍵語(yǔ)句為:

r = requests.get(url, timeout = 5).text

        我們?cè)谶@條語(yǔ)句中設(shè)置超時(shí)限定時(shí)間。
        我們?cè)賮?lái)看一下讀取超時(shí),讀取超時(shí)就是指客戶端等待服務(wù)器發(fā)送請(qǐng)求的時(shí)間,也就是指連接成功之后服務(wù)器返回響應(yīng)之間等待的時(shí)間,為了防止服務(wù)器響應(yīng)速度過(guò)慢而導(dǎo)致等待時(shí)間過(guò)長(zhǎng),我們可以設(shè)置讀取時(shí)間,超過(guò)了規(guī)定時(shí)間即為讀取超時(shí),它的用法和連接超時(shí)類似,關(guān)鍵語(yǔ)句為:

r = requests.get(url, timeout=(5,10)).text

        在這里15即為讀取限制時(shí)間,如果超過(guò)即為讀取超時(shí)。

3. 總結(jié)

        本節(jié)的內(nèi)容能夠幫助我們高效的進(jìn)行爬蟲操作,模擬瀏覽器頭部信息的訪問(wèn)方式在爬蟲中會(huì)經(jīng)常用到,各個(gè)瀏覽器對(duì)應(yīng)的方式可能不同,大家可以通過(guò)自己的瀏覽器去找到相應(yīng)的信息去解讀。


點(diǎn)贊(0)

C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程

解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)