从网页中提取文本的最佳方法是什么?
我想从一个html页面中提取出纯文本。有没有人知道在Python中怎么做比较好?
我想把页面上的所有东西都去掉,只留下文章的文本和标签之间的其他文本。像JavaScript、CSS这些都不需要了。
谢谢!
6 个回答
3
根据这里的内容:
def remove_html_tags(data):
p = re.compile(r'<.*?>')
return p.sub('', data)
正如他在文章中提到的,使用正则表达式需要先导入“re模块”。
4
你可以试试非常棒的 Beautiful Soup。
f = open("my_source.html","r")
s = f.read()
f.close()
soup = BeautifulSoup.BeautifulSoup(s)
txt = soup.body.getText()
不过要注意:你从解析中得到的结果可能会有一些“错误”。如果HTML写得不好,解析的结果也可能不太对,或者输出的内容会让你感到意外。如果你的源文件是比较规范的,格式也不错,那你应该没问题,或者至少能找到解决办法。但如果你处理的是网上随便找到的一些内容,那就要做好遇到各种奇奇怪怪情况的准备了。
5
这里的第一个回答并没有去掉页面中直接写在里面的CSS或JavaScript标签的内容(而不是链接的)。这个方法可能更接近你想要的效果:
def stripTags(text):
scripts = re.compile(r'<script.*?/script>')
css = re.compile(r'<style.*?/style>')
tags = re.compile(r'<.*?>')
text = scripts.sub('', text)
text = css.sub('', text)
text = tags.sub('', text)
return text