Beautifulsoup 查找某个子项下的所有子项

所以我基本上试图找到这个 ul 的孩子,但只找到孩子下的元素

所以如果我有这个 html 块

<ul>
    <li class = "list_item_1">item 1</li>
    <li class = "list_item_2">item 2</li>
    <li class = "list_item_3">item 3</li>
    <li class = "list_item_4">item 4</li>

</ul>

我想使用 find_all 抓住第二个项目下面的孩子

所以我希望 find_all 的输出是

[<li class = "list_item_3">item 3</li> , <li class = "list_item_4">item 4</li>]

回答

您可以.find_all(recursive=False)与列表切片一起使用:

from bs4 import BeautifulSoup
html_doc = """
<ul>
<li class = "list_item_1">item 1</li>
<li class = "list_item_2">item 2</li>
<li class = "list_item_3">item 3</li>
<li class = "list_item_4">item 4</li>
</ul>
"""
soup = BeautifulSoup(html_doc, "html.parser")
print(soup.ul.find_all(recursive=False)[2:])

印刷:

[<li>item 3</li>, <li>item 4</li>]

或者,如果您愿意使用.select,则可以将 CSS 选择器与 一起使用~

print(soup.select(".list_item_2 ~ *"))

印刷:

[<li>item 3</li>, <li>item 4</li>]

以上是Beautifulsoup 查找某个子项下的所有子项的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>