php使用QueryList轻松采集js动态渲染页面方法


Posted in PHP onSeptember 11, 2018

QueryList使用jQuery的方式来做采集,拥有丰富的插件。下面来演示QueryList使用PhantomJS插件抓取JS动态创建的页面内容。

一、安装

使用Composer安装:

1.安装QueryList

composer require jaeger/querylist

GitHub: https://github.com/jae-jae/QueryList

2.安装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插件用法:

1.安装插件

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

2.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'
])

3.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 seconds
  return $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 seconds
  return $r;
},true,[
  '--cookies-file' => '/path/to/cookies.txt'
])->rules([
  'title' => ['p','text'],
  'link' => ['a','href']
])->query()->getData();
 
print_r($data->all());
PHP 相关文章推荐
3.从实例开始
Oct 09 PHP
用PHP4访问Oracle815
Oct 09 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
php使用codebase生成随机数
Mar 25 PHP
什么情况下可以不写PHP的闭合标签“?>”
Aug 28 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
Yii实现简单分页的方法
Apr 29 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 #PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 #PHP
php 中htmlentities导致中文无法查询问题
Sep 10 #PHP
使用PHPExcel导出Excel表
Sep 08 #PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 #PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 #PHP
php curl优化下载微信头像的方法总结
Sep 07 #PHP
You might like
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
JavaScript类库D
2010/10/24 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
浅析javascript 定时器
2014/12/23 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
JavaScript模块详解
2017/12/18 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
pytyon 带有重复的全排列
2013/08/13 Python
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
详解python中@的用法
2019/03/27 Python
利用Python检测URL状态
2019/07/31 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
《第一朵杏花》教学反思
2014/04/16 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS