我正在努力学习使用飞快移动。我有很多我想搜索的html文档。我发现text_content()方法创建了一些有趣的问题,例如我可能有一些文本组织在一个看起来像
的表中<html><table><tr><td>banana</td><td>republic</td></tr><tr><td>stateless</td><td>person</td></table></html>
当我获取原始字符串并获取树,然后使用text_content以下列方式获取文本
mytree = html.fromstring(myString)
text = mytree.text_content()
结果没有空格(应该是预期的)
'bananarepublicstatelessperson'
我尝试使用string.replace()
插入新行myString = myString.replace('</tr>','</tr>\n')
我确认新线存在
'<html><table><tr><td>banana</td><td>republic</td></tr>\n<tr><td>stateless</td><td>person</td></table></html>'
但是当我从上面运行相同的代码时,换行符不存在。因此,生成的text_content()看起来就像上面一样。 这是我的一个问题,因为我需要能够分开单词,我想我可以在每个td之后添加不间断的空格,在行之后添加换行符以及在body元素等之后的换行符以获得合理符合我的文本原始来源。
我会注意到我做了一些测试,发现在段落标记关闭后插入的换行符被保留了。但是表格中有很多文字我需要能够搜索。
感谢您的帮助
答案 0 :(得分:0)
您可以使用此解决方案:
import re
def striphtml(data):
p = re.compile(r'<.*?>')
return p.sub('', data)
>>> striphtml('<a href="foo.com" class="bar">I Want This <b>text!</b></a>')
>>> 'I Want This text!'
在此处找到:using python, Remove HTML tags/formatting from a string