从一个网页上刮很多Javascript的屏幕

我被要求编写一个应用程序,屏幕从内联网网页抓取信息,并以一个很好的方便查看格式来显示它的某些信息。 该网页是一个真正的混乱,并要求用户点击六个图标,以发现订单项目是否已经到达或已经收到。 正如你可以想象的,用户觉得这至less是一件令人讨厌的事情,如果有一个任何人都可以使用的应用程序,在一个屏幕上列出他们的订单状态将是很好的。

是的,我知道一个更好的解决scheme将是重新编写Web应用程序,但这涉及到供应商的召唤,并将花费我们小小的财富。

无论如何,当看着这个我发现我想刮的网页大多是Javascript(虽然它不使用任何AJAX技术)。 有谁知道如果一个库或程序存在,我可以用Javascript喂,然后将吐出我的应用程序的DOMparsing?

我几乎可以用任何语言编写应用程序,但是我的select是JavaFX,所以我可以用它来玩。

谢谢你的时间。

伊恩

您可以考虑使用HTML单元这是一个java类库,使浏览器自动化,而无需控制浏览器,它集成了Mozilla Rhino Javascript引擎来处理加载的页面上的JavaScript。 还有一个叫做Celerity的JRuby包装器。 它的javascript支持现在不是很完美,但是如果你的页面没有使用很多黑客,那么应该工作得很好,性能应该比控制浏览器要好。 此外,您不必担心在抓取结束后所有cookies以及控制浏览器(历史logging,自动完成,临时文件等)的所有其他不好的事情。

既然你说没有使用AJAX,那么所有的信息都出现在HTML源代码中。 JavaScript只是基于用户点击呈现。 因此,您需要对应用程序的工作方式进行逆向工程,parsinghtml和javascript代码并提取有用的信息。 这是严格的文本parsing的业务 – 你不应该处理运行JavaScript和生成一个新的DOM。 这将是更难的事情。

如果使用AJAX,你的工作会更容易。 您可以轻松了解AJAX服务如何工作(可能通过接收JSON和XML)并提取信息。

你可以考虑使用一个greasemonkey JS。 greasemonkey是一个非常强大的Firefox添加,使您可以运行自己的脚本旁边的特定网站。 这使您可以修改网站的显示方式,添加或删除内容。 你甚至可以用它来做AJAX风格查找并添加dynamic内容。

如果你的工具是在家里使用,用户都很乐意使用Firefox,那么这可能是一个胜利者。

问候

我会去与Perl的Win32 :: IE ::机械化 ,它可以让你自动化的Internet Explorer。 你应该能够点击图标并提取文本,同时让MSIE完成处理所有JS的烦人任务。

我同意kgiannakakis的回答 。 如果你不能反向工程JavaScript来识别信息来自哪里,然后使用Urllib2和Beautiful Soup库来写一些简单的Python脚本来获取相同的信息,我会感到惊讶。

如果Python和抓取是一个新的想法,有一些优秀的教程可用于如何去。

看起来还有一个Python版本的机械化 。 时间重新写一些刮刀,我开发了一阵子! 🙂

我build议IRobotSoft网站刮板。 这是一个专门的免费软件的屏幕抓取与最好的JavaScript支持。 您可以使用其可视界面创build和testing机器人。 您也可以使用其ActiveX控件将其embedded到您自己的应用程序中,并隐藏浏览器窗口。

我创build了一个项目site2archive使用phantomJs呈现包括JS的东西和wget刮。 phantomJs基于Webkit,提供与Safari和Google Chrome相似的浏览环境。