php专区

 首页 > php专区 > PHP应用 > 常用功能 > php使用QueryList入门之轻松采集JavaScript动态渲染页面安装安装PhantomJS插件下载PhantomJS二进制文件插件API使用安装插件

php使用QueryList入门之轻松采集JavaScript动态渲染页面安装安装PhantomJS插件下载PhantomJS二进制文件插件API使用安装插件

分享到:
【字体:
导读:
         [导读] 下面来演示 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 QLQueryList;use QLExtPhantomJs;$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 (JonnyWPhantomJsHttpRequestInterface $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 (JonnyWPhantomJsHttpRequestInterface $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获取访问页面HTTP状态码例子
/**   * 获取远程URL的HTTP状态   *    * @version 0.0.1   * @Author  Chenjl  *    * @param string  $url       远程URL   * @param string  $data      ture[返回HTTP状态数组] | false[返回状态数值]   *    * @return  mixed   */  function get...
php采集插件querylist入门之采集微信文章...
采集目标 微信文章页标题、内容、发布时间、作者等信息。 采集示例URL   signature=6PCxJ*3ojH2ZM8pm56Lquward0mQMwSkPnqCvYlrDkQmL2kAEjGcFJMj2lzvpHyuyT30lczb2Ld0npUWmp* 2Gj7bPJY3SCWrpRKlXJA0p4eQWPpAzMPJVmxPcRV5TtLS&new=1 采集内容区图例 分析内容选择器 利用浏览器开发者工具来分析待采集的区域选择器,这里不...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……