python的lxml庫簡介 爬蟲三大庫簡介

2021-10-21 06:53:16 字數 2419 閱讀 2428

爬蟲三大庫簡介

requests庫

requests: 讓 http 服務人類。

requests庫的作用就是請求**獲取網頁資料。

簡單的使用示例:

部分結果如下圖:

開啟瀏覽器,進入在空白處右鍵,在如下所示的彈出選單中,選擇"檢視網頁原始碼"選項。

我們在新彈出的頁面中看到,先前**print(res.text)返回的結果就是網頁的源**。

有時候爬蟲程式為了更好地抓取資料,需要加入請求頭來偽裝成瀏覽器。

在瀏覽器器中,我們開啟開發者工具(一般快捷鍵是f12),並重新整理網頁後找到user-agent進行複製。如下圖所示。

請求頭的使用

requests庫不僅有get()方法,還有post()等方法。post()方法用於提交表單來進行爬取需要登陸才能獲得資料的**資料。

錯誤和異常

在使用requests庫請求時,可能並不會很順利,有時候我們可能會遇到一些情況,這時requests庫會丟擲錯誤或者異常,requests庫的錯誤和異常主要有以下4種。

requests丟擲乙個connectionerror異常,原因為網路問題(如dns查詢失敗、拒絕連線等)。

response.raise_for_status()丟擲乙個httperror異常,原因未http請求返回了不成功的狀態碼。

requests丟擲乙個timeout異常,原因為請求超時。

requests丟擲乙個toomanyredirects異常,原因為請求超過了設定的最大重定向次數。

所有的requests顯示丟擲的異常都繼承自requests.exceptions.requestexception,我們可以通過異常捕獲try來避免異常發生導致需要重新執行爬蟲程式重頭開始爬取資料。

try方法使用示例:

beautifulsoup庫

beautifulsoup庫是乙個非常流行的python模組。通過beautifulsoup庫可以輕鬆地解析requests庫請求的網頁,並把網頁源**解析為soup文件,以便資料的提取。

beautifulsoup庫示例

beautifulsoup簡單使用示例:

執行結果如下圖所示,看上去與requests庫請求返回的網頁源**類似,但通過beautifulsoup庫解析得到的soup文件按照標準縮排格式的結構輸出,為結構化的資料,為資料的過濾提取提供了方便。

解析器beautifulsoup庫除了支援python標準庫中的html解析器外,還支援一些第三方的解析器。

解析器使用方法

優點缺點

python標準庫

beautifulsoup(markup,"html.parser")

ptyhon的內建標準庫執行速度適中,文件容錯能力強

python2.7.3 or python3.2.2前的版本中文件容錯能力差

lxml html解析器

beautifulsoup(markup,"lxml")

速度快文件容錯能力強

需要安裝c語言庫

lxml xml解析器

beautifulsoup(markup,["lxml","xml"])

beautifulsoup(markup,"xml")

速度快唯一支援xml的解析器

需要安裝c語言庫

htm5lib

beautifulsoup(makup,"html5lib")

最好的容錯性

以瀏覽器的方式解析文件

生成html5格式的文件

速度慢不依賴外部擴充套件

ps:beautifulsoup庫官方推薦使用lxml作為解析器,因為效率高。

soup文件元素定位

解析得到的soup文件可以使用find()和find_all()方法以及selector()方法定位需要的元素。find()和find_all()方法用法相似,beautifulsoup文件中對這兩個方法的定義是:

1.find_all()方法

2.find()方法

find()方法與find_all()方法類似,只是find_all()方法返回的是文件中符合條件的所有tag,是乙個集合(class 'bs4.element.resultset'),find()方法返回的是乙個tag(class 'bs4.element.tag')。

3.selector()方法

(1) 滑鼠定位到想要提取的資料位置,右擊,在彈出的快捷選單中選擇「檢查」命令。

(2) 在網頁源**中右擊所選元素。

(3) 在彈出的快捷選單中選擇copy selector。便可得到需要傳遞給soup.selector的引數。

ps: li:nth-child(1)在python中執行會報錯,需改為li:nth-of-type(1)。

lxml庫

lxml庫是基於libxml2這乙個xml解析庫的python封裝。該模組使用c語言編寫,解析速度比beautifulsoup庫更快。

python的lxml庫簡介 lxml庫

lxml 是 乙個html xml的解析器,主要的功能是如何解析和提取 html xml 資料。lxml和正則一樣,也是用 c 實現的,是一款高效能的 python html xml 解析器,我們可以利用之前學習的xpath語法,來快速的定位特定元素以及節點資訊。需要安裝c語言庫,可使用 pip 安...

Python 之lxml解析庫

一 xpath常用規則 二 解析html檔案 from lxml import etree 讀取html檔案進行解析 defparse html file html etree.parse test.html parser etree.htmlparser print etree.tostring ...

python常見庫的安裝(填lxml庫安裝的坑)

lxml庫 如果使用 pip3 install lxml windows系統安裝時10個最少8個會出錯,因為lxml庫是c語言實現的,即使安裝了visual c 2015,還是會有新的錯誤出現。pipinstall lxml 3 6.0 cp35 cp35m win32 whl 如果是直接用cmd命...