QueryList static getInstance()



  • 静态方法,用于获取QueryList单一实例。

注意:此方法获取到的是全局共享的单一QueryList实例,意味着如果涉及到想要多QueryList共存的场景就需要通过new QueryList()的方式来获取QueryList实例,QueryList内置的所有静态方法都是调用getInstance()方法获取的QueryList实例。

用法


  • 基本用法
  1. $ql = QueryList::getInstance();
  2. $data = $ql->get('http://www.baidu.com/s?wd=QueryList')->find('h3 a')->texts();
  3. print_r($data->all());

输出:

  1. Array
  2. (
  3. [0] => QueryList|基于phpQuery的无比强大的PHP采集工具
  4. [1] => QueryList|基于phpQuery的无比强大的PHP采集工具
  5. [2] => 介绍- QueryList指导文档
  6. [3] => QueryList一个基于phpQuery的无比强大的采集工具 - ThinkPHP框架
  7. [4] => PHP QueryList抓取网页内容 - wb145230 - 博客园
  8. [5] => thomasw/querylist · GitHub
  9. [6] => thinkPHP3.2中使用QueryList采集演示 - ThinkPHP框架
  10. [7] => JAE/QueryList - 码云
  11. [8] => QueryList采集器2.0版本,附QueryList入门教程 - ThinkPHP框架
  • 错误示范
    可能某些情况下你需要共存多个QueryList实例,如下列设置了2个QueryList对象,由于QueryList::get()方法默认是调用getInstance()获取QueryList实例的,所以下面2个对象其实是同一个对象,所以打印结果相同。
  1. $url1 = "https://www.baidu.com/";
  2. $url2 = "https://www.bing.com/";
  3. $ql1 = QueryList::get($url1);
  4. //等价: $ql1 = QueryList::getInstance()->get($url1);
  5. $ql2 = QueryList::get($url2);
  6. $title1 = $ql1->find('title')->text();
  7. $title2 = $ql2->find('title')->text();
  8. echo $title1."\r\n".$title2;

打印结果:

  1. 微软 Bing 搜索 - 国内版
  2. 微软 Bing 搜索 - 国内版

正确写法:

  1. $url1 = "https://www.baidu.com/";
  2. $url2 = "https://www.bing.com/";
  3. $ql1 = (new QueryList)->get($url);
  4. $ql2 = (new QueryList)->get($url2);
  5. $title1 = $ql1->find('title')->text();
  6. $title2 = $ql2->find('title')->text();
  7. print_r($title1);
  8. print_r($title2);

打印结果:

  1. 百度一下,你就知道
  2. 微软 Bing 搜索 - 国内版