从BeautifulSoup中删除大文件中的html的速度更快/更少资源拆除的方法?或者,使用BeautifulSoup更好的方法?

Wax*_*lix 5 html python performance parsing beautifulsoup

目前我在键入这个时遇到了麻烦,因为根据top我的处理器是100%而我的内存是85.7%,所有这些都被python占用.

为什么?因为我让它通过一个250兆字节的文件来删除标记.250美元,就是这样!我一直在使用许多其他模块和东西在python中操作这些文件; BeautifulSoup是第一个给我带来如此小的问题的代码.如何使用近4个RAM来操作250megs的HTML?

我发现(在stackoverflow上)并且一直在使用的单行是这样的:

''.join(BeautifulSoup(corpus).findAll(text=True))
Run Code Online (Sandbox Code Playgroud)

此外,这似乎删除了所有BUT标记,这与我想要做的相反.我确信BeautifulSoup也能做到这一点,但速度问题仍然存在.

有没有什么可以做类似的事情(删除标记,可靠地保留文本)并且不需要Cray运行?

Aco*_*orn 13

lxml.html的效率更高.

http://lxml.de/lxmlhtml.html

在此输入图像描述

http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/

看起来这会做你想要的.

import lxml.html
t = lxml.html.fromstring("...")
t.text_content()
Run Code Online (Sandbox Code Playgroud)

其他几个类似的问题:python [lxml] - 清理html标签

lxml.etree,element.text不返回元素的整个文本

过滤掉HTML标签并解析python中的实体

更新:

您可能希望清除HTML以删除所有脚本和CSS,然后使用提取文本 .text_content()

from lxml import html
from lxml.html.clean import clean_html

tree = html.parse('http://www.example.com')
tree = clean_html(tree)

text = tree.getroot().text_content()
Run Code Online (Sandbox Code Playgroud)

(来自:删除python中的所有html?)