2013-04-25 213 views

回答

1

看起来这是做的方式!就这么简单

这一行你的所有文字部分的当前元素中拼接

''.join(htmlelement.find(text=True)) 
2

可以在BS4使用分解方法:

soup = bs4.BeautifulSoup('<body><a href="http://example.com/">I linked to <i>example.com</i></a></body>') 

for a in soup.find('a').children: 
    if isinstance(a,bs4.element.Tag): 
     a.decompose() 

print soup 

Out: <html><body><a href="http://example.com/">I linked to </a></body></html> 
46

随着BeautifulStoneSoupbs4走了,它甚至在Python3

from bs4 import BeautifulSoup 

soup = BeautifulSoup(html) 
text = soup.get_text() 
print(text) 
+4

这是最好使用'get_text()'而不是'getText()'。 – SparkAndShine 2015-07-20 16:21:17

+1

这是为什么?很可能是这种情况,但理解原因会有所帮助。 – 2015-08-18 08:41:42

+11

getText()是bs3语法,不符合pep8。它可能会被弃用。 – 2015-08-31 18:04:50

6

使用get_text()简单,它返回一个文档或下方中的所有文本一个标签,作为一个单一的Unicode字符串。

例如,从下面的文字中删除所有不同的脚本标签:

<td><a href="http://www.irit.fr/SC">Signal et Communication</a> 
<br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a> 
</td> 

预期的结果是:

Signal et Communication 
Ingénierie Réseaux et Télécommunications 

这里是源代码:

#!/usr/bin/env python3 
from bs4 import BeautifulSoup 

text = ''' 
<td><a href="http://www.irit.fr/SC">Signal et Communication</a> 
<br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a> 
</td> 
''' 
soup = BeautifulSoup(text) 

print(soup.get_text())