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>]