爬蟲中通過什么模擬瀏覽器工作?重點(diǎn)來啦!那就是requests模塊。
requests模塊
requests文檔http://docs.python-requests.org/zh_CN/latest/index.html
requests模塊的作用:
• 發(fā)送http請求,獲取響應(yīng)數(shù)據(jù)
requests模塊是一個第三方模塊,需要在你的python(虛擬)環(huán)境中額外安裝
• pip/pip3 install requests
安裝完成之后我們就可以模擬瀏覽器向外發(fā)出請求了。
如何實(shí)現(xiàn)呢?首先看一下發(fā)出get請求的代碼實(shí)現(xiàn):
# 需求:通過requests向百度首頁發(fā)送請求,獲取該頁面的源碼
# 步驟1: 導(dǎo)入requests模塊
import requests
# 步驟2: 確定訪問目標(biāo)url
url = 'https://www.baidu.com'
# 步驟3. 向目標(biāo)url發(fā)送get請求
response = requests.get(url)
# 步驟4: 打印響應(yīng)內(nèi)容
print(response.text)
就這樣輕松的我們通過requests模塊跟百度打了一個“招呼”,但是說真的,挺假的!!!因?yàn)榧傺b的不像唄!
所有瀏覽器在訪問百度的時候都是該帶都帶著,比如上面提到的請求行,請求頭或者請求體的內(nèi)容。
我們這個是赤裸裸的訪問哪,人家百度也挺好脾氣的,沒有說你是爬蟲我就不給你東西了。但是怎樣才能偽裝的更像一些呢。
最基本的就是添加請求頭了,大家可以通過開發(fā)者工具中的Network自行觀察。
我們這里怎么添加呢?
大家運(yùn)行代碼可以發(fā)現(xiàn),會打印出很多的內(nèi)容,那這個內(nèi)容是什么呢?這就是服務(wù)器收到了你的請求,把你想要的東西給你了。
我們打印出來看起來很亂,但是瀏覽器可是這些標(biāo)簽的翻譯專家,所以瀏覽器上你看到的是一個百度的首頁面,但是我們通過程序看到的是像下面一樣的代碼。
而通過瀏覽器的開發(fā)者工具Network看就整齊很多,因?yàn)闉g覽器就是干這個沒辦法。
但是上面大家看到的只是響應(yīng)體的內(nèi)容,因?yàn)樵贖TTP協(xié)議中,響應(yīng)也是分成了三部分:就是響應(yīng)行,響應(yīng)頭和響應(yīng)體。我們在瀏覽器中看到的都是響應(yīng)體的內(nèi)容顯示。