服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

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

2019-09-07 15:45laozhang PHP教程

这篇文章给大家分享了php使用QueryList轻松采集js动态渲染页面的相关知识点内容,有兴趣的朋友学习下。

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.安装插件

php;" style="margin: 3px auto 0px; padding: 0px 0px 0px 5px; outline: none; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; width: 640px; line-height: 20px; clear: both; border-left: 3px solid rgb(108, 226, 108);">
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教程PHP封装的page分页类定义与用法完整示例

    PHP封装的page分页类定义与用法完整示例

    这篇文章主要介绍了PHP封装的page分页类定义与用法,结合完整实例形式分析了php封装的page分页类具体定义、数据库连接、查询、样式及调用等相关操作技巧,需要的朋友可以参考下...

    ChouCat4012019-07-09
  • PHP教程PHP使用mongoclient简单操作mongodb数据库示例

    PHP使用mongoclient简单操作mongodb数据库示例

    这篇文章主要介绍了PHP使用mongoclient简单操作mongodb数据库,结合实例形式分析了php使用mongoclient针对MongoDB数据库的连接、增删改查及相关函数使用技巧,需要的朋友可以参考下...

    trouble-i-am-in4602019-06-19
  • PHP教程PHP PDOStatement::getColumnMeta讲解

    PHP PDOStatement::getColumnMeta讲解

    今天小编就为大家分享一篇关于PHP PDOStatement::getColumnMeta讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册4142019-06-24
  • PHP教程PHP的curl函数的用法总结

    PHP的curl函数的用法总结

    在本篇文章中小编给大家分享了关于PHP的curl函数的用法总结以及相关知识点内容,需要的读者们学习下。...

    laozhang3602019-06-15
  • PHP教程PHP实现微信申请退款功能

    PHP实现微信申请退款功能

    这篇文章主要为大家详细介绍了PHP实现微信申请退款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下方法...

    ufan944522019-09-04
  • PHP教程Yii2.0框架实现带分页的多条件搜索功能示例

    Yii2.0框架实现带分页的多条件搜索功能示例

    本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能。分享给大家供大家参考,具体如下: 方法一 在控制器中 public function actionShow(){ $where[title]=Yii::$app-request-get(title); $where[content]=Yii::$app-request-get(content); $query=new Query(); $query-f...

    小井smile的博客4082019-06-11
  • PHP教程PHP通过GD库实现验证码功能示例

    PHP通过GD库实现验证码功能示例

    这篇文章主要介绍了PHP通过GD库实现验证码功能,结合实例形式分析了php验证码相关图片绘制、输出操作实现技巧,需要的朋友可以参考下...

    不能吃的坚果4362019-06-10
  • PHP教程PHP如何搭建百度Ueditor富文本编辑器

    PHP如何搭建百度Ueditor富文本编辑器

    这篇文章主要为大家详细介绍了PHP搭建百度Ueditor富文本编辑器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    周子青3972019-09-05