【问题标题】:How can i add all elements in html with Jsoup?如何使用 Jsoup 在 html 中添加所有元素?
【发布时间】:2013-02-06 04:20:42
【问题描述】:
File input = new File("1727209867.htm");
Document doc = Jsoup.parse(input, "UTF-8","http://www.facebook.com/people/Alison-Vella/1727209867");

我正在尝试解析这个在本地系统中保存和使用的 html 文件。但是解析不会解析所有的html。所以我无法获得我需要的信息。使用此代码解析仅适用于 6k 字符,但实际上 html 文件有 60k 字符。

【问题讨论】:

  • 我认为输入没有这么低的限制。我使用更大的输入(在其他星座中)。一定有一些不同的地方出错了
  • 你如何确定这个 6k 限制?
  • 我检查了 doc(Document doc),它只有 6k 字符并且没​​有完成
  • 很有趣,但我通常使用 eclipse indigo 来编写 java。但我在 Maven 项目的 NetBeans 中尝试了相同的代码。
  • Jsoup 无法处理这个问题,但可以通过解决方法来解决。

标签: java html jsoup


【解决方案1】:

这在 jsoup 中是不可能的,但有一个解决方法

final File input = new File("example.html");
final int maxLength = 6000; // Limit of char's to read

InputStream is = new FileInputStream(input); // Open file for reading
StringBuilder sb = new StringBuilder(maxLength); // Init the "buffer" with the size required
int count = 0; // Count of chars readen
int c; // Char for reading

while( ( c = is.read() ) != -1 && count < maxLength ) // Read a single char until limit is reached
{
    sb.append((char) c); // Save the char into the buffer
    count++; // increment the chars readen
}


Document doc = Jsoup.parse(sb.toString()); // Parse the Html from buffer

解释:

  1. 将文件逐字符读入缓冲区,直到达到限制
  2. 从缓冲区解析文本并用jsoup处理

问题:这不会考虑关闭标签等 - 如果您处于限制状态,它将完全停止阅读。

(可能)解决方案:

  • 忽略这个并在你所在的地方停下来,解析这个并“修复”或删除悬挂的 html
  • 如果你在最后,阅读直到你到达下一个结束标签或&gt;char
  • 如果你在最后,阅读直到你到达下一个块标签
  • 如果你在最后,请阅读直到特定的标签或评论

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 2016-04-18
    • 2012-04-18
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多