返回介绍

QueryList static getInstance()

发布于 2021-04-06 13:23:43 字数 2106 浏览 1055 评论 0 收藏 0

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

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

用法


  • 基本用法
$ql = QueryList::getInstance();

$data = $ql->get('http://www.baidu.com/s?wd=QueryList')->find('h3 a')->texts();

print_r($data->all());

输出:

Array
(
    [0] => QueryList|基于phpQuery的无比强大的PHP采集工具
    [1] => QueryList|基于phpQuery的无比强大的PHP采集工具
    [2] => 介绍- QueryList指导文档
    [3] => QueryList一个基于phpQuery的无比强大的采集工具 - ThinkPHP框架
    [4] => PHP 用QueryList抓取网页内容 - wb145230 - 博客园
    [5] => thomasw/querylist · GitHub
    [6] => thinkPHP3.2中使用QueryList采集演示 - ThinkPHP框架
    [7] => JAE/QueryList - 码云
    [8] => QueryList采集器2.0版本,附QueryList入门教程 - ThinkPHP框架
  • 错误示范

可能某些情况下你需要共存多个QueryList实例,如下列设置了2个QueryList对象,但是你都是通过getInstance()获取QueryList实例的,所以下面2个对象其实是同一个对象,所以打印结果相同。

$url1 = "https://www.baidu.com/";
$url2 = "https://www.bing.com/";

$ql1 = QueryList::getInstance()->get($url1);
$ql2 = QueryList::getInstance()->get($url2);

$title1 = $ql1->find('title')->text();
$title2 = $ql2->find('title')->text();

echo $title1."\r\n".$title2;

打印结果:

微软 Bing 搜索 - 国内版
微软 Bing 搜索 - 国内版

正确写法:

$url1 = "https://www.baidu.com/";
$url2 = "https://www.bing.com/";

$ql1 = (new QueryList)->get($url);
$ql2 = (new QueryList)->get($url2);

$title1 = $ql1->find('title')->text();
$title2 = $ql2->find('title')->text();

print_r($title1);
print_r($title2);

打印结果:

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

释放资源占用,避免内存溢出

$ql1 = QueryList::getInstance()->get($url1);
// ...

// 销毁所有文档,释放内存
QueryList::destructDocuments();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文