BeautifulSoup 遍歷和獲取

遍歷文檔樹

直接子節(jié)點(diǎn)

要點(diǎn):.contents .children 屬性

.contents

tag 的 .content 屬性可以將tag的子節(jié)點(diǎn)以列表的方式輸出

#["<meta charset='utf-8'/>","<title>The Dormouse's story</title>"]

輸出方式為列表,我們可以用列表索引來獲取它的某一個(gè)元素

print(soup.head.contents[0])
#<meta charset="utf-8"/>



.children

它返回的不是一個(gè) list,不過我們可以通過遍歷獲取所有子節(jié)點(diǎn)。

我們打印輸出 .children 看一下,可以發(fā)現(xiàn)它是一個(gè) list 生成器對(duì)象

print(soup.head.children)
#<list_iterator object at 0x105c1cf28>

獲取里面的內(nèi)容

for child in  soup.body.children:
    print(child)

所有子孫節(jié)點(diǎn)

知識(shí)點(diǎn):.descendants 屬性

.descendants

.contents 和 .children 屬性僅包含tag的直接子節(jié)點(diǎn),.descendants 屬性可以對(duì)所有tag的子孫節(jié)點(diǎn)進(jìn)行遞歸循環(huán),和 children類似,我們也需要遍歷獲取其中的內(nèi)容。

節(jié)點(diǎn)內(nèi)容

知識(shí)點(diǎn):.string 屬性

多個(gè)內(nèi)容

知識(shí)點(diǎn): .strings .stripped_strings 屬性

.strings

獲取多個(gè)內(nèi)容,不過需要遍歷獲取,比如下面的例子

.stripped_strings

輸出的字符串中可能包含了很多空格或空行,使用 .stripped_strings 可以去除多余空白內(nèi)容

父節(jié)點(diǎn)

知識(shí)點(diǎn): .parent 屬性

全部父節(jié)點(diǎn)

知識(shí)點(diǎn):.parents 屬性

通過元素的 .parents 屬性可以遞歸得到元素的所有父輩節(jié)點(diǎn),例如

content = soup.head.title.string
for parent in  content.parents:
    print parent.name

兄弟節(jié)點(diǎn)

知識(shí)點(diǎn):.next_sibling .previous_sibling 屬性

兄弟節(jié)點(diǎn)可以理解為和本節(jié)點(diǎn)處在統(tǒng)一級(jí)的節(jié)點(diǎn),.next_sibling 屬性獲取了該節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn),.previous_sibling 則與之相反,如果節(jié)點(diǎn)不存在,則返回 None

注意:實(shí)際文檔中的tag的 .next_sibling 和 .previous_sibling 屬性通常是字符串或空白,因?yàn)榭瞻谆蛘邠Q行也可以被視作一個(gè)節(jié)點(diǎn),所以得到的結(jié)果可能是空白或者換行

全部兄弟節(jié)點(diǎn)

知識(shí)點(diǎn):.next_siblings .previous_siblings 屬性

通過 .next_siblings 和 .previous_siblings 屬性可以對(duì)當(dāng)前節(jié)點(diǎn)的兄弟節(jié)點(diǎn)迭代輸出

for sibling in soup.a.next_siblings:
    print(repr(sibling))

前后節(jié)點(diǎn)

知識(shí)點(diǎn):.next_element .previous_element 屬性

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容