• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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.安装插件

    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+jQuery ajax实现的实时刷新显示数据功能示例
    • jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
    • PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
    • PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
    • 使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
    • php+jQuery实现的三级导航栏下拉菜单显示效果
    • phpQuery采集网页实现代码实例
    上一篇:Yii2结合Workerman的websocket示例详解
    下一篇:php实现数字补零的方法总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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