溫馨提示×

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

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

python的BeautifulSoup庫(kù)findAll()、find()方法的詳細(xì)講解

發(fā)布時(shí)間:2021-08-31 17:55:20 來(lái)源:億速云 閱讀:301 作者:chen 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“python的BeautifulSoup庫(kù)findAll()、find()方法的詳細(xì)講解”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

find()和findAll()官方定義如下:

findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)

95%的時(shí)間只用前2個(gè)參數(shù):tag,attributes。

tag
可以傳一個(gè)標(biāo)簽的名稱或多個(gè)標(biāo)簽名稱組成的 Python列表做標(biāo)簽參數(shù)。例如,下面的代碼將返回一個(gè)包含 HTML 文檔中所有標(biāo)題標(biāo)簽的列表:
.findAll({"h2","h3","h4","h5","h6","h7"})

attributes
屬性參數(shù) attributes 是用一個(gè) Python 字典封裝一個(gè)標(biāo)簽的若干屬性和對(duì)應(yīng)的屬性值。例如,下面這個(gè)函數(shù)會(huì)返回 HTML 文檔里紅色與綠色兩種顏色的 span 標(biāo)簽:
.findAll("span", {"class":{"green", "red"}})
如果只返回一種顏色的,如綠色:
.findAll("span", {"class": "green"})

recursive
遞歸參數(shù) recursive 是一個(gè)布爾變量。你想抓取 HTML 文檔標(biāo)簽結(jié)構(gòu)里多少層的信息?如果recursive 設(shè)置為 True , findAll 就會(huì)根據(jù)你的要求去查找標(biāo)簽參數(shù)的所有子標(biāo)簽,以及子標(biāo)簽的子標(biāo)簽。如果 recursive 設(shè)置為 False , findAll 就只查找文檔的一級(jí)標(biāo)簽。 findAll默認(rèn)是支持遞歸查找的( recursive 默認(rèn)值是 True );一般情況下這個(gè)參數(shù)不需要設(shè)置。

text
文本參數(shù) text 有點(diǎn)不同,它是用標(biāo)簽的文本內(nèi)容去匹配,而不是用標(biāo)簽的屬性。假如我們想查找前面網(wǎng)頁(yè)中包含“the prince”內(nèi)容的標(biāo)簽數(shù)量,我們可以把之前的 findAll 方法換成下面的代碼:

nameList = bsObj.findAll(text="the prince")
print(len(nameList))

limit
范圍限制參數(shù) limit ,顯然只用于 findAll 方法。 find 其實(shí)等價(jià)于 findAll 的 limit 等于1 時(shí)的情形。如果你只對(duì)網(wǎng)頁(yè)中獲取的前 x 項(xiàng)結(jié)果感興趣,就可以設(shè)置它。

keywords
可以讓你選擇那些具有指定屬性的標(biāo)簽,屬于冗余的技術(shù),如下所示:第一行采用keywords,第二行采用前兩個(gè)參數(shù):tag、attributes

bsObj.findAll(id="text")
bsObj.findAll("", {"id":"text"})

用 keyword 偶爾會(huì)出現(xiàn)問(wèn)題,尤其是在用 class 屬性查找標(biāo)簽的時(shí)候,因?yàn)?class 是 Python 中受保護(hù)的關(guān)鍵字。所以一般只采用前2個(gè)參數(shù)tag、attributes即可。

“python的BeautifulSoup庫(kù)findAll()、find()方法的詳細(xì)講解”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

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

AI