【发布时间】:2021-04-23 18:48:04
【问题描述】:
我有如下所示的示例 HTML 文档。现在我需要使用 Profession as Engineer(column2) 过滤所有行并生成结果 HTML 文档。但这里的问题是我的文档包含 200 万行,文档大小为 1GB。任何人都可以建议一种更快的方法来处理这个吗?
我尝试使用 Python 和 BeautifulSoup 模块进行解析并尝试过滤,但处理数据需要 15 多个小时。有没有更快的方法来做到这一点?
代码:
from BeautifulSoup import BeautifulSoup
fd = open("input.html")
soup = BeautifulSoup(fd.read())
for tr in soup('tr'):
if str(tr('td')[1].text) != "Engineer":
tr.extract()
with open("output.html", "w") as file:
file.write(str(soup))
fd.close()
输入:
<html>
<body>
<table>
<tr>
<td>Name</td>
<td>Profession</td>
<td>Address</td>
</tr>
<tr>
<td>John</td>
<td>Assassin</td>
<td>JohnWick</td>
</tr>
<tr>
<td>Tony</td>
<td>Engineer</td>
<td>IronMan</td>
</tr>
<tr>
<td>Stark</td>
<td>Engineer</td>
<td>IronMan</td>
</tr>
<tr>
<td>Bruce</td>
<td>Professor</td>
<td>Hulk</td>
</tr>
</table>
</body>
</html>
输出:
<html>
<body>
<table>
<tr>
<td>Name</td>
<td>Profession</td>
<td>Address</td>
</tr>
<tr>
<td>Tony</td>
<td>Engineer</td>
<td>IronMan</td>
</tr>
<tr>
<td>Stark</td>
<td>Engineer</td>
<td>IronMan</td>
</tr>
</table>
</body>
</html>
【问题讨论】:
-
不知道,对我来说似乎是一个合理的问题!
标签: python html performance html-parsing