从具有大量Javascript的网页进行屏幕抓取

Ian*_*anW 17 html javascript dom screen-scraping

我被要求编写一个应用程序,该应用程序屏幕从内部网页面抓取信息,并以易于查看的格式呈现其中的特定信息.网页是一个真正的混乱,需要用户点击六个图标来发现订购的商品是否已经到达或已被收到.正如你可以想象的那样,用户发现这至少令人恼火,并且拥有一个任何人都可以使用的应用程序,在单个屏幕中列出他们的订单状态会很不错.

是的,我知道一个更好的解决方案是重新编写网络应用程序,但这将涉及到供应商,并将花费我们作为小财富.

无论如何,在我看到这个时,我发现我想要抓取的网页主要是Javascript(虽然它不使用任何AJAX技术).有没有人知道是否存在我可以使用Javascript提供的库或程序,然后会为我的应用程序解析DOM?

我几乎可以用任何语言编写应用程序,但我的偏好是JavaFX,所以我可以玩它.

谢谢你的时间.

伊恩

em7*_*m70 8

您可以考虑使用HTMLunit 它是一个java类库,用于自动化浏览而无需控制浏览器,它集成了Mozilla Rhino Javascript引擎来处理它加载的页面上的javascript.还有一个JRuby包装器,名为Celerity.它的javascript支持现在还不是很完美,但是如果你的页面没有使用很多黑客,那么应该可以正常工作,性能应该比控制浏览器更好.此外,您不必担心在刮擦结束后cookie被持久化以及所有其他讨厌的事情与控制浏览器(历史记录,自动完成,临时文件等)相关联.


kgi*_*kis 5

由于您说没有使用AJAX,因此所有信息都出现在HTML源代码中.javascript只是根据用户点击呈现它.因此,您需要对应用程序的工作方式进行反向工程,解析html和javascript代码并提取有用信息.它完全是文本解析的业务 - 你不应该处理运行javascript和生成新的DOM.这样做会困难得多.

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