- 大數(shù)據(jù)采集與爬蟲
- 李俊翰 付雯
- 893字
- 2020-09-18 18:12:30
2.5 lxml庫和BeautifulSoup庫的安裝及使用
2.5.1 lxml庫概述
lxml庫的解析功能非常強(qiáng)大,效率非常高。lxml解析庫的獨(dú)特之處在于,它結(jié)合了很多其他類似庫的運(yùn)行速度、XML功能完整性與本機(jī)Python API的簡單性,主要是兼容性優(yōu)于著名的ElementTree API。因此,lxml解析庫在Python中使用得非常廣泛。
2.5.2 BeautifulSoup庫概述
HTML網(wǎng)頁數(shù)據(jù)包含各種標(biāo)簽、類和屬性,并且還具有很好的層級關(guān)系。如何高效、準(zhǔn)確地獲取某個節(jié)點(diǎn),是需要重點(diǎn)考慮的問題。BeautifulSoup是一個非常好的解析庫。它可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。它能夠非常容易地通過網(wǎng)頁結(jié)構(gòu)和屬性提取特定的網(wǎng)頁內(nèi)容,并且提供基于Python的函數(shù)和自動轉(zhuǎn)換編碼方式,還能通過友好的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航、查找、修改方式。它位于一個HTML或XML解析器之上,為迭代、搜索和修改解析樹提供Python特有風(fēng)格的操作。
2.5.3 lxml庫和BeautifulSoup庫的安裝
前面使用requests庫的方法抓取了百度的頁面數(shù)據(jù)?,F(xiàn)在需要使用lxml和BeautifulSoup解析庫有針對性地提取需要的數(shù)據(jù)。
1.lxml庫的安裝
可參照第2.4.2節(jié)requests庫的安裝步驟安裝lxml工具包,關(guān)鍵步驟如圖2-13所示。

圖2-13 lxml庫的安裝
2.BeautifulSoup庫的安裝
在安裝BeautifulSoup庫之前,請確保已經(jīng)成功安裝了lxml庫??蓞⒄盏?.4.2節(jié)requests庫的安裝步驟安裝BeautifulSoup庫,關(guān)鍵步驟如圖2-14所示。

圖2-14 BeautifulSoup庫的安裝
2.5.4 lxml庫和BeautifulSoup庫的基本用法
1.使用BeautifulSoup讀取指定HTML文件或文檔對象模型
在導(dǎo)入了BeautifulSoup庫之后,就可以使用其open()方法,通過傳入指定的HTML文件獲得文檔對象。同時,這里也可以直接使用BeautifulSoup類通過傳入文檔對象標(biāo)簽直接初始化。如果沒有指定解析庫的話,系統(tǒng)會默認(rèn)使用lxml庫。

2.BeautifulSoup的tag對象是與其一一對應(yīng)的

tag對象有很多方法和屬性,其中最重要的屬性有name、attributes和string。
1)name屬性表示該標(biāo)簽指向的標(biāo)簽類型。

2)attributes屬性表示該標(biāo)簽當(dāng)中所指向的特定的屬性值。

3)string屬性表示該標(biāo)簽中顯示的文本內(nèi)容。

3.使用文檔節(jié)點(diǎn)樹遍歷和查詢文檔對象
操作文檔樹最簡單的方法就是告訴它希望獲取的tag的name,如果想獲?。紁>標(biāo)簽,只要用soup.p即可。

輸出結(jié)果如下。

BeautifulSoup還可以實(shí)現(xiàn)更多復(fù)雜的針對文檔節(jié)點(diǎn)的操作,包括contents、children、parents、next_sibling和previous_sibling等。

contents屬性可以將tag的子節(jié)點(diǎn)以列表的形式輸出。

輸出結(jié)果如下。

children生成器可以對tag的子節(jié)點(diǎn)進(jìn)行循環(huán)。

輸出結(jié)果如下。

parent屬性可以獲取某個元素的父節(jié)點(diǎn)。

輸出結(jié)果如下。

next_sibling和previous_sibling屬性可以查詢兄弟節(jié)點(diǎn)。

輸出結(jié)果如下。

- 終身成長:優(yōu)秀孩子的10堂自我管理課
- 做孩子的心理醫(yī)生
- 孩子的語言:語言優(yōu)勢成就孩子的畢生發(fā)展
- 家園共育手冊(中班)
- 能力立體培養(yǎng)方案(兒童素質(zhì)培養(yǎng)叢書)
- 名校之路:一位旅美30年教育專家的留學(xué)心經(jīng)
- 學(xué)前數(shù)學(xué)思維訓(xùn)練3:4歲上
- 全景創(chuàng)意磁力貼:英語記憶單詞書
- 培養(yǎng)孩子高情商,父母就要這樣做
- 高情商培養(yǎng):給孩子一生的幸福
- 南京樣本:小班化教育實(shí)踐
- 如何閱讀能讓孩子受益一生
- 走向北大清華:優(yōu)等生高效學(xué)習(xí)方法全集
- 素質(zhì)教育之感恩篇:守望真情
- 對孩子說“不”:父母有邊界,孩子守規(guī)則