网站地图    收藏   

主页 > php专栏 > php综合实列 >

php使用QueryList入门之轻松采集JavaScript动态渲染页面

来源:未知    时间:2018-07-23 13:59 作者:小飞侠 阅读:

[导读] 下面来演示 QueryList 使用 PhantomJS 插件抓取JS动态创建的页面内容。 安装 使用Composer安装: 安装QueryList composerrequirejaeger/querylist GitHub: https://github.com/jae-jae/QueryList 安装PhantomJS插件 compos...

下面来演示QueryList使用PhantomJS插件抓取JS动态创建的页面内容。


安装

使用Composer安装:


安装QueryList


composer require jaeger/querylist
GitHub: https://github.com/jae-jae/QueryList


安装PhantomJS插件


composer require jaeger/querylist-phantomjs
GitHub: https://github.com/jae-jae/QueryList-PhantomJS


下载PhantomJS二进制文件

PhantomJS官网:http://phantomjs.org ,下载对应平台的PhantomJS二进制文件。


插件API

QueryList browser($url,$debug = false,$commandOpt = []):使用浏览器打开连接


使用

以采集「今日头条」手机版为例,「今日头条」手机版基于React框架,内容是纯动态渲染出来的。


下面演示QueryList的PhantomJs插件用法:


安装插件


use QL\QueryList;use QL\Ext\PhantomJs;$ql = QueryList::getInstance();// 安装时需要设置PhantomJS二进制文件路径$ql->use(PhantomJs::class,'/usr/local/bin/phantomjs');//or Custom function name$ql->use(PhantomJs::class,'/usr/local/bin/phantomjs','browser');

Example-1


获取动态渲染的HTML:


$html = $ql->browser('https://m.toutiao.com')->getHtml();print_r($html);

获取所有p标签文本内容:


$data = $ql->browser('https://m.toutiao.com')->find('p')->texts();print_r($data->all());

输出:


Array([0] => 自拍模式开启!国庆假期我和国旗合个影[1] => 你旅途已开始 他们仍在自己的岗位上为你的假期保驾护航[2] => 喜极而泣,都教授终于回到地球了!//....)


使用http代理:


// 更多选项可以查看文档: http://phantomjs.org/api/command-line.html$ql->browser('https://m.toutiao.com',true,[// 使用http代理'--proxy' => '192.168.1.42:8080','--proxy-type' => 'http'])

Example-2


自定义一个复杂的请求:


$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){$r->setMethod('GET');$r->setUrl('https://m.toutiao.com');$r->setTimeout(10000); // 10 seconds$r->setDelay(3); // 3 secondsreturn $r;})->find('p')->texts();print_r($data->all());

开启debug模式,并从本地加载cookie文件:


$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){$r->setMethod('GET');$r->setUrl('https://m.toutiao.com');$r->setTimeout(10000); // 10 seconds$r->setDelay(3); // 3 secondsreturn $r;},true,['--cookies-file' => '/path/to/cookies.txt'])->rules(['title' => ['p','text'],'link' => ['a','href']])->query()->getData();print_r($data->all());


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论