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)