6

我需要一个命令行工具(或 Javascript/PHP,但我认为命令行是一种方法)来渲染和获取 URL 的渲染内容,但重要的是我需要渲染 Javascript 不仅是 CSS/Html/图像。

例如像这样的命令:“renderengine http://www.google.es outputfile.html”和网页的内容(解析的html和执行的javascript)保存在outputfile.html中。

我需要这个,因为我需要获取像grooveshark这样的完整javascript网站的结果,网站加载全部使用javascript/ajax,爬虫什么也没找到,只有基本的HTML空模板(因为在使用ajax/javscript后加载)

是否存在任何支持 Javascript(例如 V8)的 linux 浏览器引擎输出结果以保存在文件中?

4

2 回答 2

9
  • Selenium:具有多种语言绑定的非常完整的解决方案
  • puppeteer:无头 Chrome API,可用于 NodeJS 或作为命令行工具
  • HTtrack:命令行工具
  • Apache Notch & webmagic : 开源 Java 网络爬虫
  • pholcus:用 Go 编写的“分布式和高并发”网络爬虫
  • xvfb一个显示服务器,实现了 X11 显示服务器协议,不显示任何屏幕输出。我以 Travis CI 和 Protractor 为例成功地使用了它。替代品:XDummy
  • PhantomJS(首先由nvuono建议):可以将呈现的页面导出为非 HTML(pdf、png...)。 PhantomJS 开发暂停,直至另行通知(更多细节)。 密切相关: SlimerJS CasperJS

还有很多 Python 网页抓取库:

于 2014-01-10T19:31:39.420 回答
6

从www.phantomjs.org尝试 phantomjs ,您可以轻松修改包含的 rasterize.js 以导出呈现的 HTML。它基于 webkit 并对目标站点的 javascript 进行全面评估,允许您调整超时或根据需要先执行自己的代码。我个人使用它来保存完全渲染的 knockout.js 模板的硬拷贝 HTML 文件版本。

它执行javascript所以我只是做了这样的事情并将控制台输出保存到一个文件中:

var markup = page.evaluate(function(){return document.documentElement.innerHTML;});
console.log(markup);
phantom.exit();
于 2013-09-10T13:27:28.783 回答