美文网首页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