首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从动态html页面中获取值?

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

Stack Overflow用户
提问于 2013-07-11 23:45:31
回答 2查看 2.6K关注 0票数 1

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

http://www.batstrading.com/book/ibm/

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

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

代码语言:javascript
复制
    <tbody>
      <tr>
        <td class="shares">&nbsp;</td>
        <td class="price">&nbsp;</td>
      </tr>

它显示的不是数据,而是&nbsp;

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 23:52:30

放弃当前的方法,因为网站是通过Javascript更新的。您将不能仅仅下载HTML并使其工作。

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

代码语言:javascript
复制
http://www.batstrading.com/json/bzx/book/IBM

它是完全有效的JSON。使用您的HTTP客户端请求该链接,并使用Jackson解析JSON。这将产生非常可靠的结果。

免责声明您需要确保您所做的事情符合您正在使用的网站上的服务条款。否则,你就会受到法律问题的困扰。

票数 2
EN

Stack Overflow用户

发布于 2013-07-11 23:49:39

你不能通过直接下载页面来做到这一点,你有两个选择。就我个人而言,我会使用CasperjsSelenium与页面上的javascript进行交互。否则,你必须手动模拟javascript正在做什么,这通常不是很持久或可伸缩的(阅读:一旦他们改变了他们网站的任何东西,它就会崩溃)。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17597864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档