美文网首页Laravel开发实践我爱编程laravel
【laravel笔记】php-phantomjs 使用

【laravel笔记】php-phantomjs 使用

作者: 野人植树 | 来源:发表于2018-04-11 00:36 被阅读245次

需新增软件:

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();

相关文章

网友评论

本文标题:【laravel笔记】php-phantomjs 使用

本文链接:https://www.haomeiwen.com/subject/qybohftx.html