繁体   English   中英

无法使用Jsoup解析网址的完整html

[英]not able to parse complete html of a url using Jsoup

Jsoup库未解析给定URL的完整html。 网址的原始html中缺少某些部分。

有趣的是: http : //facebook.com/search.php?init=s : email&q=somebody@gmail.com&type=users

如果您在Jsoup的官方网站http://try.jsoup.org/中提供了上面提到的url,则可以通过提取正确显示该URL的确切html,但是使用jsoup库在程序中找不到相同的结果。

这是我的Java代码:

String url="http://facebook.com/search.php?init=s:email&q=somebody@gmail.com&type=users";

Document document = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36").get();

String question =document.toString();
System.out.println(" whole content: "+question);

清楚地提到了在其官方网站中使用的正确的userAgent,但是结果是,我可以看到原始html代码的70%,但是在中间,我却找不到几个除法标记,它具有我想要的数据。

我试过尝试.....没用...为什么文档中缺少几个div标签。

您可以直接将URL放入浏览器中,如果登录到Facebook,则响应将显示为:“未找到查询结果。请检查拼写或尝试其他术语。” 这是我在jsoup解析上述URL的html时要寻找的东西。

但是很遗憾,这部分丢失了。实际上,此响应位于div id中:“#pagelet_search_no_results”。 我在解析的html中找不到具有此ID的div。 我尝试了jsoup提供的许多方法,但是没有运气。

据我所知,Jsoup通常将检索到的内容的大小限制为1M。 尝试此操作以获取完整的html源:

Document document = Jsoup.connect(url)
  .userAgent("Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36")
  .maxBodySize(0)
  .get();

maxBodySize(0)删除1M限制。 您可以在连接中设置其他有用的参数,例如超时或cookie。

您还应该设置较大的超时时间,例如:

Document document = Jsoup.connect(url)
.header("Accept-Encoding", "gzip, deflate")
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0")
.maxBodySize(0)
.timeout(600000)
.get();

暂无
暂无

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

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