来源:未知 时间: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二进制文件。 插件APIQueryList 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