Jsoup - 缺失内容

3
我正在使用JSoup执行以下代码
Document parse = Jsoup.connect("http://www.google.com/movies?near=<MyCity>&sort=1&start=0")
                       .followRedirects(true)
                       .ignoreContentType(true)
                       .timeout(12000)
                       .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
                       .referrer("http://www.google.com")
                       .execute()
                       .parse();
Elements elements = parse.select(".movie_results .movie");

但是当我检查元素时,它明显缺少很多内容。我试图从上面的页面中获取电影标题和描述。

我错过了什么?这可能与缺少头部参数、cookie有关吗?还有其他的库可以解决这个问题吗?

我可以通过执行以下命令来重现相同的问题:

curl http://www.google.com/movies?near=<MyCity>&sort=1&start=0 > page.html

小提示

仅强调其中一条评论:try.jsoup.org 是开始使用 Jsoup 的好地方。它可以帮助您以非常干净的方式解析 HTML。

如果您喜欢这个提示并挽救了您的一天,请点赞:D


2
试一下 @ http://try.jsoup.org/。我看到了很多 JavaScript。 - Raghunandan
1
如果您能够通过下载目标来重现相同的问题,那么这意味着您想要的信息就是不存在的(JSoup是否应该执行javascript以获取一个人在“正常”浏览器中看到的最终html/css?)。请查阅您尝试使用的API文档(例如Google电影)。 - frozenkoi
刚刚发布了答案。+1 鼓励你的努力 :) - MatheusJardimB
2个回答

0
尝试使用maxBodySize(0)。默认的maxBodysize为2MB,因此将maxBodySize设置为0将允许无限大小的文件。
     Jsoup.connect("your url").maxBodySize(0).followRedirects(true);

0

经过使用Google Chrome Dev Tools进行一些调查,我发现一些标题信息丢失了。最终的代码类似于这个:

Jsoup.connect(url)
  .followRedirects(true)
  .ignoreContentType(true)
  .timeout(12000) // optional
  .header("Accept-Language", "pt-BR,pt;q=0.8") // missing
  .header("Accept-Encoding", "gzip,deflate,sdch") // missing
  .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36") // missing
  .referrer("http://www.google.com") // optional
  .execute()
  .parse(); 

感谢您的回答!


我已经做了与上述相同的事情,但它没有加载完整的HTML页面,只给了一半页面。有什么帮助吗? - Abhrajyoti Kirtania

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接