【发布时间】:2019-07-09 20:14:51
【问题描述】:
我有一个很大的 html 文档。我正在使用 BeautifulSoup 解析它,但我希望提取的唯一信息是特定标签的文本(我相信它只会出现一次)。
文档格式如下:
<html>
<div class=...>
<div class=...
<div class="foo">
...
...
目前,我正在使用 SoupStrainer 仅过滤具有“foo”类的 div 标签。 也许我应该使用不同的库,或者我误解了 SoupStrainer 在做什么。
html = open("file.html", encoding="UTF8").read()
parse_only = SoupStrainer("div", class_="foo")
soup = BeautifulSoup(raw_html, "lxml", parse_only=parse_only)
text = soup.text
我希望这会比没有 SoupStrainer 时快得多,但我只得到了大约 2 倍的加速,我希望它更快。我认为这样做的原因是它仍然需要检查文档中的每个标签是否匹配。我希望它简单地停在与该标签匹配的第一个标签上,而不再花时间解析文档。
【问题讨论】:
-
如果您的解析任务如此简单,我建议您不要使用解析包。只需使用
string.find()。
标签: python beautifulsoup