需新增软件:
PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。
简而言之:基于WebKit的,没有界面的浏览器。
闪亮的功能点:PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试。
优势:跨平台,易上手。
引自:https://blog.csdn.net/yuexianchang/article/details/53306892
安装:
百度phantomjs 官网,下载对应环境的版本
homestead 开发环境
下载安装包:
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
解压:tar -xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
解压后的文件夹放到code/ 下开始使用。
引入vendor包
composer 安装 php-phantomjs +querylist
querylist 是个很友好的工具,也可单独使用,但js动态加载内容无法抓取。
这里实际吧phantomjs 作为querylist的一个插件调用。
代码示例
$ql = \QL\QueryList::getInstance();
// Set PhantomJS bin path
// $ql->use(\QL\Ext\PhantomJs::class,"C:\phpStudy\WWW\phantomjs\bin\phantomjs.exe"); //windows下使用
$ql->use(\QL\Ext\PhantomJs::class,"/home/vagrant/code/phantomjs_l/bin/phantomjs");
$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r)use($url){
$r->setMethod('GET');
$r->setUrl($url);
$r->setTimeout(10000); // 10 seconds
$r->setDelay(3); // 3 seconds 为了js动态内容加载完全
return $r;
})->rules([
'updated'=>['.tag span','text'], //class 为tag,子元素span中的text文本
'level' => ['font','color'], //front元素属性color值
'content' => ['font','text'], // front元素text文本
])->query()->getData(); //数组集合
$raw=$data->all();
网友评论