使用BeautifulSoup在第一个子标记之前提取文本

时间:2012-04-14 14:08:30

标签: python beautifulsoup

来自这个html来源:

<div class="category_link">
  Category:
  <a href="/category/personal">Personal</a>
</div>

我想提取文字Category:

以下是我尝试使用Python / BeautifulSoup(输出为注释 - 在#之后)

parsed = BeautifulSoup(sample_html)
parsed_div = parsed.findAll('div')[0]
parsed_div.firstText() # <a href="/category/personal">Personal</a>
parsed_div.first() # <a href="/category/personal">Personal</a>
parsed_div.findAll()[0] # <a href="/category/personal">Personal</a>

我期待一个&#34;文本节点&#34;作为第一个孩子。关于如何解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:12)

我很确定以下内容应该做你想做的事情

parsed.find('a').previousSibling # or something like that

那会返回一个NavigableString实例,它几乎是一样的 作为unicode实例的内容,但您可以在其上调用unicode来获取 unicode对象。

我会看看我是否可以测试一下并告诉你。

编辑:我刚刚确认它有效:

>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup('<div class=a>Category: <a href="/">a link</a></div>')
>>> soup.find('a')
<a href="/">a link</a>
>>> soup.find('a').previousSibling
u'Category: '
>>>