Java Jsoup没有解析整个html正文?
Jsoups解析是否存在某种类型的限制。我一直在处理内存问题,这是我在这个网站上打开的另一个问题,但我开始意识到我甚至没有得到我需要的所有信息 我使用jsoup解析一个html页面,它是一个测试页面,除了用空格分隔的数百万个数字外,什么都没有。当我用jsoup解析它时,我可以得到一些文本,但它不能得到所有文本 例如,如果我有一个Java Jsoup没有解析整个html正文?,java,web-scraping,web-crawler,html-parsing,jsoup,Java,Web Scraping,Web Crawler,Html Parsing,Jsoup,Jsoups解析是否存在某种类型的限制。我一直在处理内存问题,这是我在这个网站上打开的另一个问题,但我开始意识到我甚至没有得到我需要的所有信息 我使用jsoup解析一个html页面,它是一个测试页面,除了用空格分隔的数百万个数字外,什么都没有。当我用jsoup解析它时,我可以得到一些文本,但它不能得到所有文本 例如,如果我有一个字符串文本,其中包含来自.parse()的html,那么它在整个网页中只有一半的数字。如果我转到网页,抓取最后一个号码,用html调用文本上的.contains(),它将
字符串文本
,其中包含来自.parse()的html,那么它在整个网页中只有一半的数字。如果我转到网页,抓取最后一个号码,用html调用文本上的.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限制了检索到的文档的最大大小和获取文档的时间。您的文档似乎比默认值大。因此,您必须:
将maxBodySize和timeout设置为0将完全消除限制。请注意,这可能会很危险,并且会永久停止应用程序。Jsoup会限制检索到的文档的最大大小和获取文档的时间。您的文档似乎比默认值大。因此,您必须:
将maxBodySize和timeout设置为0将完全消除限制。请注意,这可能会很危险,并使应用程序永远停止运行。谢谢您的回答,它确实帮助了我完成任务。我添加了以下代码行
.maxBodySize(0)
.timeout(60000)
.get();
谢谢你的回答,它真的帮助了我的任务。我添加了以下代码行
.maxBodySize(0)
.timeout(60000)
.get();