基于命令行的HTTP POST从javascript丰富的网页中检索数据

时间:2012-05-24 12:31:11

标签: java javascript linux command-line http-post

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

我现在能做什么:

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

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

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

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

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

    2. 传递标题(包含会话信息等)我从curl到这些完整浏览器中的一个并再次将输出html转储回stdout。如果一切都失败了,它可能是窗口上的打印屏功能。

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

    4. 任何人都有经验做类似的事情并取得成功吗?

      谢谢!

3 个答案:

答案 0 :(得分:2)

您可以使用WebDriver进行操作,只需要安装Web浏览器即可。还有其他解决方案,例如SeleniumHtmlUnit(没有浏览器但可能表现不同)。

您可以在here找到Selenium项目的示例。

<强>的webdriver

  

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

<强>硒

  

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

<强>的HtmlUnit

  

HtmlUnit是“用于Java程序的GUI-Less浏览器”。它模拟HTML   文档并提供一个API,允许您调用页面,填写   表格,点击链接等...就像你在“正常”中做的那样   浏览器。

我建议使用WebDriver,因为它不需要像Selenium那样的独立服务器,而对于HtmlUnit,如果你不想安装浏览器而不用担心Xvfb无头的环境。

答案 1 :(得分:1)

您可能希望了解Selenium可以为您做些什么。它有许多语言驱动程序(包括Java),可用于与浏览器交互以处理内容,通常用于测试和验证目的。我不确定你怎么能准确地得到你想要的东西,但是想让你意识到它的存在和潜力。

答案 2 :(得分:0)

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