- Get Started
- 基础
- 进阶
- 技巧
- 插件推荐
- API
- Get Started
- 基础 API
- QueryList html($html)
- string getHtml($rel = true)
- QueryList rules(array $rules)
- QueryList range($selector)
- QueryList removeHead()
- QueryList query(Closure $callback = null)
- Collection getData(Closure $callback = null)
- Array queryData(Closure $callback = null)
- QueryList static getInstance()
- void destruct()
- void destructDocuments() 静态方法
- QueryList pipe(Closure $callback)
- 特殊 API
- 高级 API
- 默认插件
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
QueryList static getInstance()
静态方法,用于获取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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论