【问题标题】:Java read json from HTTP bodyJava 从 HTTP 正文中读取 json
【发布时间】:2016-04-13 21:35:13
【问题描述】:

我想用Java程序爬取以下链接的数据。 第一页没有问题,但是当我要爬取下一页的数据时,和第一页的源代码是一样的。 我需要的信息位于 JSON 中的一个数组中,该数组是对 get 请求的响应。您可以在this 图片中看到设置和响应。

This 是带有 JSON 的页面的链接。

我发现了这样的帖子:Get a JSON object from a HTTP response,但如果我使用 getContent() 方法,我只能获取页面的内容,而不是完整的 HTTP 正文。
我什至尝试了 getEntity() 方法和更多方法,但没有一个起作用。
大多数其他帖子从源代码中包含 JSON 的页面读取 JSON,like here
有什么想法可以让我获得完整的 JSON 或更好的数组吗?

感谢您的帮助, 亲切的问候。

【问题讨论】:

  • 终于找到了一个Java应用的答案,见here

标签: java html json httprequest


【解决方案1】:

我不确定您要做什么,但我想弄清楚。您想通过搜索“247 Mitfahrgelegenheiten von Frankfurt nach Muenchen”的所有结果获取此page 内容,对吗?

如果是这样,您不能只对该页面进行简单的 HTTP Get,因为该网站具有需要由 HMTL/CSS/JavaScript 渲染引擎(即浏览器或浏览器开发人员)解释和执行的活动内容套件,例如 WebKit。幸运的是,有几种工具可以帮助您做到这一点,并支持多种语言。最简单的是 JavaScript,它是 PhantomJS

获取该页面就像在 javascript 源文件中一样简单:

console.log('Loading a web page');
var page = require('webpage').create();
var url = 'http://phantomjs.org/';
page.open(url, function (status) {
  //Page is loaded!
  phantom.exit();
});

当然,还有一些小工作要做,但是 PhantomJS 有很多 examples 如何等待页面内容加载、在其中执行 javascript 以及获取整个页面内容,就像您在真实浏览器中看到的一样.

【讨论】:

  • 感谢您的回答 loretoparisi。你是对的,我尝试阅读网站的全部内容并使用数据。我将研究 PhantomJS 并尝试将其用于我的建议。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2011-10-26
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多