繁体   English   中英

Jsoup无法解析整个HTML正文?

[英]Jsoup not parsing entire html body?

Jsoups解析是否有某种类型的限制。 我一直在处理内存问题,这是我在此站点上提出的另一个问题,但是开始意识到我什至没有得到我需要的所有信息。

我正在使用jsoup解析一个html页面,它是一个测试页面,但是只有数百万个由空格分隔的数字。 当我用jsoup解析它时,我可以得到一些文本,但不会得到全部。

例如,如果我有一个String text ,其中包含来自.parse()的html,则它在整个网页中仅包含一半的数字。 如果我转到网页并获取最后一个数字,然后使用html调用text上的.contains() ,它将失败。 但是,如果我在.contains()检查通过的html中途有一个数字,这是什么意思?

更奇怪的是,如果我解析html并将其写入文本文件,则除了页面上的前几个单词外,文本为空。 测试页基本上说“测试页”,然后是数百万个数字,在我的文本文件中,它只说“测试页”,没有数字,但是有100%的数字,因为我可以在文本上调用.contains()来检查那里的号码。

    html = (Jsoup.connect(url.toString()).get().html());
            Document doc = Jsoup.parse(html);
            text = (doc.body().text());         
            PrintWriter out = new PrintWriter("filename2.txt");
            out.write(Jsoup.parse(html).body().text());
            out.flush();
            out.close();

最后的相关测试代码

编辑:浪费了很多时间,答案很简单,因为它无法使用Jsoup解析URL的完整html。 基本上jsoup的限制为1M,因此您可以删除约束

我解决了html解析问题,但没有解决文本不会打印到文件的事实:/

Jsoup限制了所检索文档的最大大小和获取文档的时间。 您的文档似乎比默认文档大。 因此,您必须指定其他限制

html = Jsoup.connect(url.toString())
       .maxBodySize(0)
       .timeout(0)
       .get()
       .html();

将maxBodySize和timeout设置为0会完全删除该限制。 请注意,这可能很危险,并会永久停止您的应用程序。

感谢您的回答,它确实帮助了我的任务。 我添加了以下几行代码。

.maxBodySize(0)
.timeout(60000)
.get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM