从网页中提取文本的最佳方法是什么?

6 投票
6 回答
5777 浏览
提问于 2025-04-15 23:34

我想从一个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

撰写回答