我遇到一个问题,可能很容易,但我没有在文档上看到它。
这是目标html结构,非常简单。
<h3>Top
<em>Mid</em>
<span>Down</span>
</h3>
我想得到&#34; Top&#34;文本位于h3
标记内,我写了这个
from bs4 import BeautifulSoup
html ="<h3>Top <em>Mid </em><span>Down</span></h3>"
soup = BeautifulSoup(html)
print soup.select("h3")[0].text
但它将返回Top Mid Down
,我该如何修改它?
答案 0 :(得分:1)
您可以使用查找设置 text = True 和 recursive = False :
In [2]: from bs4 import BeautifulSoup
...: html ="<h3>Top <em>Mid </em><span>Down</span></h3>"
...: soup = BeautifulSoup(html,"html.parser")
...: print(soup.find("h3").find(text=True,recursive=False))
...:
Top
根据格式,有许多不同的方式:
print(soup.find("h3").contents[0])
print(next(soup.find("h3").children))
print(soup.find("h3").next)
答案 1 :(得分:0)
尝试这样的事情:
from bs4 import BeautifulSoup
html ="<h3>Top <em>Mid </em><span>Down</span></h3>"
soup = BeautifulSoup(html)
print soup.select("h3").findChildren()[0]
虽然我不完全确定。也请检查一下 - How to find children of nodes using Beautiful Soup
基本上你需要寻找第一个childNode。
答案 2 :(得分:-1)
您可以轻松使用正则表达式进行搜索 像这样的东西
pageid=re.search('<h3>(.*?)</h3>', curPage, re.DOTALL)
使用pageid.group(value)
方法