爬蟲爬取**出現403,因為站點做了防爬蟲的設定
一、herders 屬性
爬取csdn部落格
import urllib.request
url = ""file = urllib.request.urlopen(url)
爬取結果
urllib.error.httperror: http error 403: forbidden
這就說明csdn做了一些設定,來防止別人惡意爬取資訊
所以接下來,我們需要讓爬蟲模擬成瀏覽器
二、方法1:使用build_opener()修改報頭
由於urlopen()不支援一些http的高階功能,所以我們需要修改報頭。可以使用urllib.request.build_opener()進行,我們修改一下上面的**:
import urllib.request
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()
print(data)
上面**中我們先定義乙個變數headers來儲存user-agent資訊,定義的格式是(「user-agent」,具體資訊)
具體資訊我們上面已經獲取到了,這個資訊獲取一次即可,以後爬取其他**也可以用,所以我們可以儲存下來,不用每次都f12去找了。
然後我們用urllib.request.build_opener()建立自定義的opener物件並賦值給opener,然後設定opener的addheaders,就是設定對應的頭資訊,格式為:「opener(物件名).addheaders = [頭資訊(即我們儲存的具體資訊)]」,設定好後我們就可以使用opener物件的open()方法開啟對應的**了。格式:「opener(物件名).open(url位址)」開啟後我們可以使用read()方法來讀取對應資料,並賦值給data變數。
得到輸出結果
b'\r\n\r\n \r\n \r\n \r\n\r\n\r\n ...
三、方法2:使用add_header()新增報頭
除了上面的這種方法,還可以使用urllib.request.request()下的add_header()實現瀏覽器的模擬。
先上**
import urllib.request
url = ""req = urllib.request.request(url)
data = urllib.request.urlopen(req).read()
print(data)
好,我們來分析一下。
匯入包,定義url位址我們就不說了,我們使用urllib.request.request(url)建立乙個request物件,並賦值給變數req,建立request物件的格式:urllib.request.request(url位址)
隨後我們使用add_header()方法新增對應的報頭資訊,格式:request(物件名).add_header(『物件名』,『物件值』)
現在我們已經設定好了報頭,然後我們使用urlopen()開啟該request物件即可開啟對應的**,多以我們使用
data = urllib.request.urlopen(req).read()開啟了對應的**,並讀取了網頁內容,並賦值給data變數。
Python爬蟲模擬瀏覽器示例
抓取 網頁中的所有出版社的名稱。網頁如圖 方法1 import re import urllib.request from urllib.request import urlopen,request pattern 使用正規表示式抽取,輸出的東西在 之中 headers 模擬瀏覽器 ret requ...
Python爬蟲 模擬瀏覽器訪問 Requests
有時候爬蟲需要加入請求頭來偽裝成瀏覽器,以便更好的抓取資料.開啟瀏覽器chrome找到user agent進行複製 headers headers get方法新增請求頭 print res.text 執行結果 requests庫不僅有get 方法,還有post 等方法.post 方法用於提交表單來爬...
python爬蟲模擬瀏覽器的兩種方法例項分析
爬蟲爬取 出現403,因為站點做了防爬蟲的設定 一 herders 屬性 爬取csdn部落格 import urllib.request url file urllib.request.urlopen url 爬取結果 這就說明csdn做了一些設定,來防止別人惡意爬取資訊 所以接下來,我們需要讓爬蟲...