2012-04-14 68 views
6

从这个网站源之前提取文本:使用BeautifulSoup第一个孩子标签

<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> 

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

+1

'parsed_div.contents [0]' – Avaris 2012-04-14 16:37:35

回答

11

我确信以下应该做你想要

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: ' 
>>> 
+0

真棒!像魅力一样工作 – 2012-04-14 14:58:36

相关问题