互联网上的页面抓取似乎对我来说有点障碍,因为越来越多的网站依赖于JavaScript来渲染部分屏幕。
在我看来,有这么多开源布局和JavaScript渲染器发布(如WebKit,Gecko和Chromium + V8),某人必须已经制作了用于下载页面并呈现其JavaScript而无需运行实际浏览器的工具。但是,我没有找到我正在寻找的搜索内容 - 我找到了像Selenium-rc这样的工具,但它们依赖于正在运行的浏览器。我对可以执行以下一项(或两项)的任何工具或库感兴趣:
可以从命令行(* nix)运行的程序,在给定页面源的情况下,它返回由某些JS引擎呈现的页面源。
使用特定语言的集成支持,允许人们(轻松地)将页面源传递给它并返回由某些JS引擎呈现的页面源。
我认为#1在一般意义上是优选的,但如果工具以我想要使用的语言存在,那么#2会更有用。而且,我并不关心特定的JS引擎 - 任何相对现代的一个人会这样做。有什么?
答案 0 :(得分:4)
web kit html to pdf作品非常完美,它甚至可以制作jpg
答案 1 :(得分:2)
您可以查看HTMLUnit。它的主要用途是自动网络测试,但我认为它可以让你获得渲染页面。
答案 2 :(得分:2)
嗯,有DumpRenderTree工具用作WebKit测试套件的一部分。我不确定它是否适合变成一个独立的工具,但它可以满足您的要求(渲染HTML,运行JavaScript,并将其渲染树转储到磁盘上)。
答案 3 :(得分:2)
由于JavaScript可以对网页的文档对象模型(DOM)进行大量操作,因此似乎准确地抓取任意页面的内容,您不仅需要运行JavaScript引擎,还需要运行JavaScript引擎。 d还需要页面的完整和准确的DOM表示。如果您有一个真正的浏览器引擎实例化,那么这只是你会得到的。可以使用嵌入的,未显示的WebKit或Gecko引擎,然后在适当的加载延迟后允许脚本执行,只需将HTML内容转储为HTML格式。
答案 4 :(得分:1)
我们前一段时间使用Rhino从Java做了一些自动化测试。它似乎会为你完成这项工作:)
答案 5 :(得分:1)
我认为Qt的示例代码使用包含的WebKit将页面呈现为像素图。从那里到完整的CLI实用程序只是定义您的需求。
当然,对于大多数屏幕抓取需要你想要的文字,而不是像素图...如果这是你想要的,最好检查Rhino
答案 6 :(得分:0)
有Cobra Engine for Java(http://lobobrowser.org/cobra.jsp),它处理Javascript(它也有一个渲染器,但这是可选的)。我从来没有用过它,但听过很多关于它的事情。
答案 7 :(得分:0)
让WebView呈现页面而不显示任何内容的代码非常少,但它必须是一个GUI应用程序。他们也可以获取命令行参数,并隐藏窗口。直接使用WebKit可以在工具中使用。
除了Objective-C中复杂的DOM访问外,WebKit还可以注入JavaScript,并与jQuery一起构成一个很好的抓取解决方案。不过,我不知道有任何通用的应用程序。