9

从这个 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>

我希望“文本节点”可以作为第一个孩子使用。关于如何解决这个问题的任何建议?

4

1 回答 1

16

我相当确定以下应该做你想要的

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: '
>>> 
于 2012-04-14T14:53:28.663 回答