我有一个旧的Java程序,用于从html页面获取数据,几年前工作良好,现在当我运行它时,没有数据。页面链接为:
http://www.batstrading.com/book/ibm/
我仍然可以看到从我的Java程序中获得的html表,但是没有数据,但是如果您使用浏览器访问该页面,您可以看到数据动态变化,为什么?
我现在使用Java程序从页面获得的html文本类似于您可以从浏览器的视图源代码中看到的文本,如下所示:
<tbody>
<tr>
<td class="shares"> </td>
<td class="price"> </td>
</tr>它显示的不是数据,而是
如何修复我的代码以获取数据?我的意思是: Java程序没有问题,它获取文本就像浏览器的视频源一样,您看不到数据,因为页面现在是动态的,所以如何使用Java从动态页面获取数据是一个问题。
发布于 2013-07-11 23:52:30
放弃当前的方法,因为网站是通过Javascript更新的。您将不能仅仅下载HTML并使其工作。
然而,一种比使用Selenium或JS引擎更简单的方法是简单地请求Javascript用来更新页面的源数据:
http://www.batstrading.com/json/bzx/book/IBM它是完全有效的JSON。使用您的HTTP客户端请求该链接,并使用Jackson解析JSON。这将产生非常可靠的结果。
免责声明您需要确保您所做的事情符合您正在使用的网站上的服务条款。否则,你就会受到法律问题的困扰。
发布于 2013-07-11 23:49:39
你不能通过直接下载页面来做到这一点,你有两个选择。就我个人而言,我会使用Casperjs或Selenium与页面上的javascript进行交互。否则,你必须手动模拟javascript正在做什么,这通常不是很持久或可伸缩的(阅读:一旦他们改变了他们网站的任何东西,它就会崩溃)。
这些工具将模拟浏览器,并让您等待某些元素加载。
还有许多其他类型的web浏览器,但我强烈推荐Casper,因为它快速且易于使用,甚至可以在Java脚本中调用,因为它只是Javascript。有关从java调用javascript的说明,请参阅this。
https://stackoverflow.com/questions/17597864
复制相似问题