使用Jsoup获取网站 - 页面视图源和Jsoup显示不同的内容

时间:2013-02-16 19:55:02

标签: java android jsoup

我使用Jsoup废弃网站:

doc = Jsoup.connect(String.valueOf(urls[0])).userAgent("Mozilla").get();    

这是链接:

http://www.yelp.com/search?find_desc=restaurant&find_loc=willowbrook%2C+IL&ns=1#l=p:IL:Willowbrook::&sortby=rating&rpp=40

我已将 rpp = 40 参数添加到命令行中的链接,以显示每页40个结果。我能够在页面查看源中看到所有结果。 我知道Jsoup仅用于静态内容,无法获取使用AJAX / JS库技术生成内容的网站。但是为什么Jsoup无法通过页面查看源检索我在浏览器中看到的相同内容?页面视图源显示40个结果,而Jsoup只能从10个结果中检索元素?如何通过页面查看源获取可见的每个元素。

1 个答案:

答案 0 :(得分:1)

简短回答 Jsoup无法执行Javascript。

答案很长

http://www.yelp.com/search?find_desc=restaurant&find_loc=willowbrook%2C+IL&ns=1#l=p:IL:Willowbrook::&sortby=rating&rpp=40

您正在寻找的网页接受带有参数的Http Get。在普通浏览器中,它接受参数并加载页面。但未选中willowbrook (在您的示例中)。它在加载页面后加载JS,Javascript在 Fliters 的搜索框中显示搜索结果。因此,当你使用Jsoup时,你会得到更多的结果,因为它加载'state = IL'而没有'willowbrook'被过滤。