代码之家  ›  专栏  ›  技术社区  ›  Dan Lew

是否有用于呈现使用javascript的网页的命令行或库工具?

  •  18
  • Dan Lew  · 技术社区  · 16 年前

    互联网上的页面抓取对我来说似乎有些困难,因为越来越多的网站依赖javascript来呈现屏幕的一部分。

    在我看来,随着这么多开源布局和javascript呈现程序的发布(比如 WebKit , Gecko Chromium + V8 )一定是有人制作了一个工具来下载一个页面并呈现它的javascript,而不必运行一个真正的浏览器。然而,我并没有找到我的搜索结果-我发现了一些工具,比如 Selenium-rc ,但它们依赖于正在运行的浏览器。我对任何工具或库感兴趣,这些工具或库可以执行以下一项(或两项)操作:

    1. 一种可以从命令行(nix)运行的程序,给定一个页面的源代码,它返回由某个js引擎呈现的页面的源代码。

    2. 特定语言中的集成支持,允许用户(轻松地)将页面的源代码传递给它,并返回由某个js引擎呈现的页面的源代码。

    我认为1在一般意义上是比较好的,但是如果这个工具存在于我想使用的语言中,2会更有用。另外,我不关心特定的js引擎-任何相对现代的引擎都可以。外面有什么?

    8 回复  |  直到 14 年前
        1
  •  4
  •   h4ck3rm1k3    14 年前

    从html到pdf的web工具包非常完美,甚至可以生成jpg

    http://wkhtmltopdf.googlecode.com

        2
  •  2
  •   Sergey    16 年前

    你可以看看 HTMLUnit . 它的主要目的是自动web测试,但我认为它可以让您获得呈现的页面。

        3
  •  2
  •   Brian Campbell Dennis Williamson    16 年前

    嗯,这是 DumpRenderTree 作为WebKit测试套件的一部分使用的工具。我不确定它是否适合变成一个独立的工具,但它会按照您的要求(呈现html、运行javascript并将其呈现树转储到磁盘)。

        4
  •  2
  •   Ben Combee    16 年前

    由于javascript可以对web页面的文档对象模型(document object model,dom)进行很多操作,因此似乎要准确地抓取任意页面的内容,您不仅需要运行javascript引擎,还需要页面的完整而准确的dom表示。只有当你有一个真正的浏览器引擎实例时,你才能得到这样的东西。可以使用嵌入式的、不显示的webkit或gecko引擎来实现这一点,然后在适当的加载延迟以允许脚本执行之后,只需以html格式转储dom内容。

        5
  •  1
  •   Seb    16 年前

    我们用过 Rhino 前几天,用Java做一些自动化测试。它似乎能帮你完成任务:)

        6
  •  1
  •   Javier    16 年前

    我认为qt有一个示例代码,它使用包含的webkit将页面呈现为pixmap。从那里到一个完整的cli实用程序只是定义您的需要。

    当然,对于大多数屏幕抓取需要你想要的文字,而不是一个像素…如果那是你想要的,最好去看看犀牛

        7
  •  0
  •   David    16 年前

    有JAVA的眼镜蛇引擎( http://lobobrowser.org/cobra.jsp ,它处理javascript(它也有一个渲染器,但这是可选的)。我从来没用过,但听说过很多好话。

        8
  •  0
  •   Tobias    16 年前

    让webview呈现一个页面而不显示任何内容是非常少的代码,但它必须是一个gui应用程序。它们也可以使用命令行参数,并隐藏窗口。直接使用webkit在工具中是可能的。

    除了objective-c webkit中复杂的dom访问之外,它还可以注入javascript,并与jquery一起创建一个很好的抓取解决方案。不过,我不知道有什么通用应用程序会这么做。