在另一个标签BeautifulSoup之前查找标签



find_previous给出特定标签前面的标签,但我想在标签正上方<b>标签中找到文本<table>

"
<h2>Hi</h2>
<b>I am here</b>
<b>Output</b>
<h2>Hi</h2>
<table>
.....
</table>

"

预期输出应Output 。我该怎么做?

find_previous()的调用可以首先用于查找上一个<b>标记。从那里可以使用.text.get_text()提取元素的文本。

使用您拥有的 HTML,以下内容将起作用:

from bs4 import BeautifulSoup
html = """<h2>Hi</h2>
<b>I am here</b>
<b>Output</b>
<h2>Hi</h2>
<table>
.....
</table>"""                
soup = BeautifulSoup(html, "html.parser")
print(soup.table.find_previous('b').text)

这将<b>标签显示为:

Output

另一种方式可能是这样的:

from bs4 import BeautifulSoup
html ='''
<h2>Hi</h2>
<b>I am here</b>
<b>Output</b>
<h2>Hi</h2>
<table>
.....
</table>
'''               
soup = BeautifulSoup(html, "lxml")
item = soup.select_one("table").find_previous_sibling("b").text
print(item)

最新更新