我不确定这是否可行,但我想从使用Javascript呈现数据的网页中检索一些数据。这将来自linux shell。
我现在能做什么:
http post使用curl / lynx / wget登录并从命令行获取标题
使用标题进入命令行网页中的“安全”位置
但是,页面上呈现的唯一元素是静态html。我需要的大部分信息都是用js动态呈现的(虽然最终也是一个html)并且不会出现在命令行浏览器上。我理解问题在于缺少js解释器。
因此......我认为可能的一些解决方法是:
从命令行调用完整浏览器,并以某种方式将信息传递回stdout。这意味着我必须能够发布。
传递标题(包含会话信息等)我从curl到这些完整浏览器中的一个并再次将输出html转储回stdout。如果一切都失败了,它可能是窗口上的打印屏功能。
纯java解决方案也可以。
任何人都有经验做类似的事情并取得成功吗?
谢谢!
答案 0 :(得分:2)
您可以使用WebDriver进行操作,只需要安装Web浏览器即可。还有其他解决方案,例如Selenium和HtmlUnit(没有浏览器但可能表现不同)。
您可以在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,否则这是不可能的,即使这样,我猜它真的取决于它。 你能详细说明你的目标吗?为了个人的好奇心: - )