Python BeautifulSoup不是递归文本

时间:2013-09-30 15:26:05

标签: beautifulsoup screen-scraping

我有一个带有如下代码的span元素,我怎样才能提取文本只存在于anchor(a)标记之外:

# print soup.prettify()
<span class="1">
    text_wanted         
    <a data-toggle="notify" href="https://www.abc.com/1" class="class1"><span>text1</span></a>
    <a data-toggle="notify" href="https://www.abc.com/2" class="class2"><span>text2</span></a>
</span>

我正在考虑以下解决方案:

text_all = soup.text.encode('utf-8')
text_strip_list = [a.text.encode('utf-8').strip() for a in soup.find_all('a')]
for text_strip in text_strip_list:
    text_all = text_all.replace(text_strip, '').strip()

我想知道是否有一种简单的方法可以获得所需的文本,而不是潜入锚标签..

提前致谢...

1 个答案:

答案 0 :(得分:1)

假设html是带有解析HTML的BeautifulSoup对象,

from BeautifulSoup import NavigableString

print [node for node in html.find('span').contents if type(node) is NavigableString]

将生成最外层span内的文本节点。