Java 如何从动态html页面获取值?

Java 如何从动态html页面获取值?,java,dynamic-html,Java,Dynamic Html,我有一个旧的Java程序,用于从html页面获取数据,这是几年前开发的,现在当我运行它时,没有数据。页面链接为: 我仍然可以看到从Java程序中获得的html表,但是没有数据,但是如果使用浏览器访问该页面,您可以看到数据动态变化,为什么 我现在使用Java程序从页面中获取的html文本与您可以从浏览器的视图源中看到的文本类似,如下所示: <tbody> <tr> <td class="shares">&nbsp;&

我有一个旧的Java程序,用于从html页面获取数据,这是几年前开发的,现在当我运行它时,没有数据。页面链接为:

我仍然可以看到从Java程序中获得的html表,但是没有数据,但是如果使用浏览器访问该页面,您可以看到数据动态变化,为什么

我现在使用Java程序从页面中获取的html文本与您可以从浏览器的视图源中看到的文本类似,如下所示:

    <tbody>
      <tr>
        <td class="shares">&nbsp;</td>
        <td class="price">&nbsp;</td>
      </tr>

它显示的不是数据,而是


如何修复代码以获取数据?我的意思是:Java程序没有问题,它获取的文本就像浏览器的视图源代码一样,你看不到数据,因为页面现在是动态的,所以如何使用Java从动态页面获取数据是个问题。

直接下载页面无法做到这一点,这里有两个选项。我个人会使用或与页面上的javascript交互。否则,您必须手动模拟javascript正在执行的操作,这通常不是很持久或可伸缩的(阅读:一旦他们更改站点的任何内容,它就会崩溃)

这些工具将模拟浏览器,并允许您等待某些元素加载


还有许多其他类型的web浏览器,但我强烈推荐Casper,因为它非常快速、易于使用,甚至可以在Java脚本中调用,因为它只是Javascript。有关从java调用javascript的说明,请参阅。

放弃当前的方法,因为站点是通过javascript更新的。您将无法下载HTML并使其正常工作

但是,一种更简单的方法(比使用Selenium或JS引擎)是简单地请求Javascript用于更新页面的源数据:

http://www.batstrading.com/json/bzx/book/IBM
它是完全有效的JSON。请求与HTTP客户端的链接,并使用Jackson解析JSON。这将产生非常可靠的结果


免责声明您需要确保您所做的符合您使用的网站上的服务条款。否则,您将面临法律问题。

页面的可能副本正在运行javascript。使用像firebug这样的工具来分析发送的请求,并从java应用程序中模拟它。我个人认为,学习使用在任何情况下都能工作的强大工具比假设其他站点会像这样好是更好的解决方案,但如果这真的是一个极限,那么为了简单起见,这可能是一个更好的方法。@SlaterTyranus我相信在工作中使用正确的工具。在这项特殊的工作中,硒的杀伤力过高。但是,是的,对于其他情况(例如QA测试,或者没有这种友好JSON的屏幕截取站点),它是一个非凡的工具