1

我不确定这是否可行,但我想从使用 Javascript 呈现数据的网页中检索一些数据。这将来自 linux shell。

我现在能做的:

  1. http post 使用 curl/lynx/wget 登录并从命令行获取标题

  2. 使用标题进入命令行网页中的“安全”位置

但是,页面上呈现的唯一元素是静态 html。我需要的大部分信息都是用 js 动态呈现的(尽管最终也是 html),并且不会显示在命令行浏览器上。我知道问题在于缺少 js 解释器。

因此......我认为可能的一些解决方法是:

  1. 从命令行调用完整的浏览器并以某种方式将信息传递回标准输出。这意味着我必须能够发布。

  2. 将我从 curl 获得的标头(带有会话信息等)传递到这些完整浏览器之一,然后再次将输出 html 转储回标准输出。如果一切都失败了,它可能是窗口上的打印屏幕功能。

  3. 纯Java解决方案也可以。

有人有做过类似的事情并取得成功的经验吗?

谢谢!

4

3 回答 3

2

你可以使用WebDriver来做,只是你需要安装网络浏览器。还有其他解决方案,例如SeleniumHtmlUnit(没有浏览器,但可能表现不同)。

你可以在这里找到 Selenium 项目的例子。

网络驱动程序

WebDriver 是一个用于编写网站自动化测试的工具。它旨在模仿真实用户的行为,并因此与应用程序的 HTML 进行交互。

Selenium 使浏览器自动化。就是这样。你用这种力量做什么完全取决于你。主要是为了测试目的而自动化 Web 应用程序,但当然不仅限于此。无聊的基于 Web 的管理任务也可以(而且应该!)自动化。

html单元

HtmlUnit 是“Java 程序的无 GUI 浏览器”。它对 HTML 文档进行建模并提供一个 API,允许您调用页面、填写表单、单击链接等……就像您在“普通”浏览器中所做的一样。

我建议使用WebDriver,因为它不需要像 .这样的独立服务器Selenium,而HtmlUnit如果您不想在无头环境中安装浏览器而不担心Xvfb ,则可能适合。

于 2012-05-24T12:44:56.807 回答
1

You might want to see what Selenium can do for you. It has numerous language drivers (Java included) that can be used to interact with the browser to process content typically for testing and verification purposes. I'm not exactly sure how you can get exactly what you are looking for out of it but wanted to make you aware of its existence and potential.

于 2012-05-24T12:55:59.247 回答
0

除非你设置一个 websocket,否则这是不可能的,即使这样,我想这真的取决于。你能详细说明你的目标吗?出于我个人的好奇心:-)

于 2012-05-24T12:37:14.977 回答