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

Elv*_*uza 6 python beautifulsoup

从这个HTML源:

<div class="category_link">
  Category:
  <a href="/category/personal">Personal</a>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望提取文本 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>
Run Code Online (Sandbox Code Playgroud)

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

Shr*_*rat 12

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

parsed.find('a').previousSibling # or something like that
Run Code Online (Sandbox Code Playgroud)

这将返回一个与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: '
>>> 
Run Code Online (Sandbox Code Playgroud)