20.1MB
1.32MB
PhantomJS是一个基于Webkit浏览器引擎的JavaScript API软件。这个软件不仅可以支持各种web标准,我们还可以通过PhantomJS中文版编译、解释和执行JavaScript代码,从而帮助用户模拟登录等操作,从而抓取需要登录的网站。
PhantomJS软件介绍
PhantomJS是一个基于webkit的JavaScript API。它以Qtwebkit为核心浏览器功能,使用webkit编译、解释和执行JavaScript代码。在基于webkit的浏览器中你能做的任何事情,它都能做到。它不仅是一个隐形浏览器,还提供了CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等选项。它还提供了处理文件I/O的操作,以便您可以在操作系统中读写文件。PhantomJS用途广泛,如网络监控、网页截屏、无浏览器的网页测试、页面访问自动化等。软件功能
网页:其功能是提供一套访问和操作web文档的核心方法,包括DOM操作、事件捕获、用户事件模拟等。系统:该模块提供了一些与操作系统相关的接口,如访问操作系统信息、访问系统环境变量、接受命令行参数等与程序执行相关的系统信息。
文件系统。熟悉NodeJS的朋友都知道NodeJS内置了相关的核心模块。Fs为执行文件I/O操作提供了一个标准接口,例如读写文件、删除文件等。它让你很容易保存一些文件(如日志文件等)。).
服务器:顾名思义,你可以基于它实现自己的webserver,可以处理请求,执行PhantomJS代码等。
PhantomJS安装说明
为了方便起见,建议将PhantomJS放在单独的文件夹中,比如D:\workspace\phantomjs。打开文件夹D:\workspace\phantomJS\bin,双击运行phantomjs.exe,出现如下界面,即可运行JS代码。
如果你不喜欢总是去D:\workspace\phantomjs\bin文件夹打开phantomjs.exe来运行一个程序,那么你可以将phantomjs.exe添加到环境变量中。具体如下:打开我的电脑->右键属性->高级系统设置->高级选项卡->环境变量,在系统变量中找到Path,将您的phantomjs添加到环境变量中。例如,我的路径被添加为";D:\workspace\phantomjs\bin”,切记不要丢失前面的分号。
幻像的用法
在前面的例子中,我们已经初步了解了幻像对象。其功能是定义和控制虚拟运行环境的参数和过程。主要的API包括:phantom.argsString[]
获取传递给这个JS程序的参数需要和system.args(详见下面的系统模块)区分开来,后者表示传递给phantomjs引擎的参数。比如phantom js这个短语。/test . js http://baidu.com,通过phantom.args,我们可以得到参数列表为["http://baidu.com"],而通过system.args,我们可以得到参数列表为["。/test.js "," http://baidu.com "】。区别在于是否包含当前脚本名。但是,API phantom.scriptName提供了获取脚本名称的功能。
phantom.cookiesObject[]
或者获取并设置cookies,但建议使用其他API进行设置。同时,相关的API有:
phantom . Add cookie(object)Boolean:添加一个cookie值
phantom . delete Cookie(cookiename)Boolean:删除指定的Cookie值
Phantom.clearCookies():清除所有cookie
获取或设置是否支持cookies。
phantom.injectJs(文件名)布尔值:
将指定的外部JS文件注入到当前环境中。当执行这个方法时,phantomjs将首先从当前目录中检索这个文件。如果找不到,就会在phantom.libraryPath指定的路径中寻找API phantom.libraryPath基本上服务于phantom.injectJs()。
幻影. one rror
当页面中出现js错误,并且没有被page.onError处理时,它将被这个处理程序捕获。下面是一个使用这个API的例子。因为在phantom环境下调试代码比较困难,所以了解这些错误陷阱的API可能会对我们有所帮助。
phantom.onError=function(msg,trace)& # 123;varmsgStack=[
常见问题
1.为什么构建幻想曲需要很长时间?由于PhantomJS构建工作流与WebKit模块捆绑在一起,因此需要编译数千个源文件。强烈推荐使用二进制包,下载速度快,安装方便。
2.能不能估计一下X函数的可用性?
因为没有人全职工作,所以不可能预测完成特定功能的准确时间。由于PhantomJS的每个贡献者都按照自己的步调工作,有时可能需要几个发布周期,直到某个特性发布。
3.为什么会得到错误消息phantomjs:无法连接到X服务器?
在PhantomJS 1.4或更早的版本中,仍然需要X服务器。解决方法是使用Xvfb。从PhantomJS 1.5开始,就是纯粹的无头,不需要再运行X11/Xvfb了。