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

时间:2013-10-17 09:31:19

标签: java html url jsoup

Jsoup库没有解析给定网址的完整html。 url的orignial html中缺少一些分区。

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

如果您在Jsoup的官方网站http://try.jsoup.org/中提供上述网址 它通过提取正确显示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正在其官方网站中使用 但是,在结果中,我可以看到70%的原始html代码,但在中间,我找不到几个分区标签,这是我想要的数据。

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

您可以直接将网址添加到浏览器中,如果您登录到Facebook,则可以看到响应:“找不到查询结果。 检查你的拼写或尝试另一个术语。“这是我正在寻找的jsoup解析上述网址的HTML。

但遗憾的是,这一部分缺失了。实际上这个回复是在div id:“#pagelet_search_no_results”中。我在解析的html中找不到具有此id的div。我尝试了jsoup提供的很多方法,但没有运气。

2 个答案:

答案 0 :(得分:3)

据我所知,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。

答案 1 :(得分:2)

您还应该设置一个大的超时,例如:

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();