【发布时间】:2014-04-27 09:43:50
【问题描述】:
我希望有一个在我的 linux 服务器上作为守护进程运行的网络浏览器。浏览器应该有一个应用程序接口,以便我可以编写一个将这些命令发送到浏览器的脚本(伪代码):
set viewport size to 1024x768
turn javascript on
turn cookies off
enable loading of images
load http://facebook.com
wait for execution of javascript (max 10 sec)
scroll down 200 pixels
move mouse-pointer to 280,500 (relative to viewport)
wait again for execution of javascript (max 10 sec)
get browser content as DOM (encoded as tree of JSON object)
store viewport content as image to the file system
emulate click'n'drag from x,y=10,15 to 20,70 (coordinates relative to element with id="abc")
有一些解决方案(例如 perl-modules)将网页的 html-code 加载到字符串中,也有将 html-strings 转换为 DOM-object-trees 的解决方案。加载嵌入的图像和链接也很容易。
但我没有找到能够执行 javascript 的解决方案(而且我不想编写 javascript 模拟器)。有许多网站使用 AJAX 等技术按需加载内容,我发现通过执行在服务器上运行的脚本来获取这些内容真的很困难。
而且我不知道应该怎么做才能生成网页的屏幕截图而不在 GUI 上显示网页。我想要一个无 GUI 服务器上的脚本来为我执行此操作。
所有常见的 Web 浏览器都可以执行 javascript,它们还可以在图形视口中显示 Web 内容。但是是否还有一个浏览器可以作为一个由外部脚本使用定义良好的 API 控制的守护进程来执行此操作?也许 Firefox 有一个插件可以将它变成一个守护进程?
【问题讨论】:
-
phantomjs 有什么替代品吗?我安装了它,但它崩溃了。见github.com/ariya/phantomjs/issues/12183
标签: batch-file browser scripting