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