溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么安裝和使用Python第三方模塊beautifulsoup

發(fā)布時(shí)間:2020-08-25 15:57:02 來源:億速云 閱讀:188 作者:Leah 欄目:編程語言

怎么安裝和使用Python第三方模塊beautifulsoup?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

beautiful soup是Python的一個HTML或XML的解析庫。它提供一個簡單的、Python式的函數(shù)來處理導(dǎo)航、搜索、修改分析數(shù)等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹唵?,所以不需要多少代碼就可以寫出一個完整的應(yīng)用程序。

beautiful soup自動將輸入文檔轉(zhuǎn)化為Unicode編碼,輸出文檔轉(zhuǎn)化為utf-8編碼。你不需要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時(shí)你僅僅需要說明一下原始的編碼方式就可以了。

安裝

windows下:

首先進(jìn)入pip的安裝目錄,位于Scripts文件夾中

怎么安裝和使用Python第三方模塊beautifulsoup

然后執(zhí)行:

pip install beautifulsoup4

怎么安裝和使用Python第三方模塊beautifulsoup

Linux下:

$ sudo apt-get python-bs4(python2)
$ sudo apt-get python3-bs4(python3)

Beautiful Soup常用的方法和屬性

1.find_all() 方法:find_all()方法搜索當(dāng)前tag的所有符合過濾條件的tag子節(jié)點(diǎn)。在搜索子節(jié)點(diǎn)的時(shí)候,我們不僅可以制定要搜索的子節(jié)點(diǎn)的標(biāo)簽名,還可以添加過濾條件,更精確的選擇我們需要的子節(jié)點(diǎn)。

2.find() 方法:find()方法和find_all()方法的參數(shù)和用法幾乎一樣,只不過find()方法只選取符合條件的第一個標(biāo)簽。

3.get_text()方法:如果只想得到tag中包含的文本內(nèi)容,那么可以使用get_text()方法,這個方法獲取到tag中包含的所有文版內(nèi)容包括子孫tag中的內(nèi)容,并將結(jié)果作為Unicode字符串返回。

4.獲取節(jié)點(diǎn)屬性的方法:如果我們想要獲取節(jié)點(diǎn)的屬性,比如對于<a href="www.baidu.com"></a>,我們想獲取它的href屬性值,即www.baidu.com。

5.select()方法:通過使用beautifulsoup庫中的select()方法,我們可以使用CSS選擇器來選擇我們需要的標(biāo)簽。也就是說,我們可以通過標(biāo)簽名,標(biāo)簽的class、標(biāo)簽的id,通過標(biāo)簽的name、href等屬性來選擇我們的元素。使用該方法返回的是一個迭代器,我們可以通過for…in…循環(huán)遍歷。

6.string屬性:如果一個節(jié)點(diǎn)只包含一個文本節(jié)點(diǎn),或者是只包含一個節(jié)點(diǎn),那么可以使用該屬性獲取該文本節(jié)點(diǎn)的文本內(nèi)容,或者是這個節(jié)點(diǎn)的文本內(nèi)容。例如:對于<div>hahaha</div>和<div><p>hahaha</p></div>,使用返回的結(jié)果是一樣的。

7.strings屬性:如果一個節(jié)點(diǎn)下面有很多子孫節(jié)點(diǎn),我們可以使用strings屬性來獲取其子孫節(jié)點(diǎn)的所有文本。該屬性最終返回的是一個迭代器,我們可以通過for…in…循環(huán)來遍歷。

8.stripped_strings屬性:在使用上述strings屬性獲取一個節(jié)點(diǎn)中后代文本的時(shí)候,可能或出現(xiàn)換行和空格等空白文本,這樣在處理的時(shí)候會出現(xiàn)麻煩,如果不想獲取換行和空格,那么我們可以使用stripped_strings屬性。該屬性和strings屬性一樣,返回的也是迭代器,不能直接打印,需要使用for…in…循環(huán)來遍歷。

9.contents屬性:該屬性返回的是某個節(jié)點(diǎn)下的全部子元素,包括子元素的標(biāo)簽名和文本內(nèi)容。返回的數(shù)據(jù)類型是列表。

10.children屬性:該屬性和contents屬性的用法是一樣的,但是返回的數(shù)據(jù)類型是迭代器。

Beautiful Soup4中四中常見的對象

1.Tag對象:Beautiful Soup中所有的標(biāo)簽都是Tag類型,并且通過bs = BeautifulSoup(html_str, 'lxml')方法常見的bs對象在本質(zhì)上也是Tag類型。我們我們前面說到的find_all()、find()等方法,也都是Tag對象的方法。

2.BeautifulSoup對象:通過bs = BeautifulSoup(html_str, ‘lxml’)方法常見的bs是BeautifulSoup對象,BeautifulSoup繼承自Tag對象。所以我們之前說bs在本質(zhì)上是Tag類型,而且BeautifulSoup對象的find_all()、find()也是繼承自Tag對象的。

3.NavigableString對象:該對象繼承自Python中的str對象,用起來和str一樣,沒什么說的。

4.Comment對象:這個對象繼承自NavigableString對象,也沒什么說的。

總結(jié):

·推薦使用lxml,必要時(shí)使用lxml.parser;

·節(jié)點(diǎn)選擇篩選功能弱,但速度塊;

·建議使用find();find_all()查詢單個或者多個結(jié)果;

·css選擇器也是個不錯的選擇。

關(guān)于怎么安裝和使用Python第三方模塊beautifulsoup問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI