1

我使用 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 个结果中检索元素?如何获取通过页面视图源可见的每个元素。

4

1 回答 1

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。在普通浏览器中,它接受参数并加载页面。但没有检查过柳溪(在你的例子中)。它在加载页面后加载 JS,并且 Javascript 为过滤搜索结果执行复选框。因此,当您使用 Jsoup 时,您会获得更多结果,因为它加载了 'state=IL' 而没有过滤 'willowbrook'。

于 2013-02-16T20:11:23.613 回答