Python& Beautifulsoup网页抓取 - 选择具有特定子标记的段落

时间:2016-01-26 17:52:32

标签: python beautifulsoup

我试图隔离感兴趣的文本"以下序列中最后一段的文字:

<div class='div_name_class'>
<p>
   <span class='class_name_1' title='title1'>val1</span>
   <span class='class_name_1' title='title2'>val2</span>
</p>
<p><span class='class_name_2'><em>text of no interest</em></span>text of interest</p>

我到目前为止尝试过:

print soup.find('span', attrs={'class': 'class_name_2'}).parent.text

print soup.find('em').parent.parent.text

但两者都返回:&#34;没有兴趣的文本和#34;

我知道&#34;感兴趣的文字&#34;可以与上述结果分开,但它看起来不是一个优雅的解决方案。

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

您可以使用extract删除em标记,如下所示:

from bs4 import BeautifulSoup

html = """<div class='div_name_class'>
<p>
   <span class='class_name_1' title='title1'>val1</span>
   <span class='class_name_1' title='title2'>val2</span>
</p>
<p><span class='class_name_2'><em>text of no interest</em></span>text of interest</p>"""

soup = BeautifulSoup(html)
p = soup.find('span', attrs={'class': 'class_name_2'}).parent
p.span.em.extract()
print p.text

这会显示:

text of interest