我想在span标签之间提取数据 . 这是一个html代码示例:
<p>
<span class="html-italic">3-Acetyl-</span>
<span class="html-italic">(4-acetyl-5-(β</span>
"-"
<span class="html-italic">naphtyl)-4,5-dihydro-1,3,4-oxodiazol-2-yl)methoxy)-2H-chromen-2-one</span>
"("
<b>5b</b>
</p>
我需要一个全名:
3-Acetyl-4-acetyl-5-(β-naphtyl)-4,5-dihydro-1,3,4-oxodiazol-2-yl)methoxy)-2H-chromen-2-one
(没有5b) . 我不能't know how to extract ' - ' between the second and the third span tags. Also, a total number of span tags may vary and ' - '可以在任何span标签之间 . 我写的代码只给我:3-乙酰基-4-乙酰基-5-(β . 这是我的代码的一部分:
p = soup.find("p")
name = ""
for child in p.children:
if child.name == "span":
name += child.text
print name
任何帮助都非常感谢!
5 回答
你可以使用CSS selectors .
试试这样:
输出:
你可以做点什么
您可以使用BeautifulSoup的
.findAll(text=True)
获取元素内的所有文本,包括 Span 之外的文本 . 这将返回一个文本部分列表,需要删除空格和引号 . 我'm not sure what rule you'用于排除最后的"("5b
但也许它就像切片列表一样简单:结果:
如果你喜欢单行,你可以这样做: