从 403MB(是的,我有这个权利)html 文件中有效地提取特定的 table

Efficiently extract specific table from 403MB (yes I have that right) html file

问题:

我目前适用于小于 100MB 的文件的方法是:

    Document doc = Jsoup.parse(full_html);
    Elements html_tables = doc.select("table");

JSoup.parse 虽然对于 400MB 的文件表现很糟糕。我可以编写自己的 HTML 分词器来快速提取 table 吗?有什么建议吗?

背景:

正如在对原始 post 的评论中提到的,您不应该尝试使用基于 DOM 的解析器加载如此庞大的文档,因为这会占用大量内存。相反,您应该研究行之有效的替代方案。这里的关键词是SAX,代表"Simple API for XML Parsing"。有几个 Java 选项:

  • tagsoup - 尽最大努力使 messy/incomplete html
  • 有意义
  • nekohtml - 全能 html 解析器。

处理方式与基于 DOM 的解析有些不同,但易于管理。