- 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
- 默认插件
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Collection getData(Closure $callback = null)
获取采集结果数据,需要先执行query()
方法。
- 参数: $callback 可以通过这个回调函数进一步处理结果,替换内容、补全链接,下载图片等等;返回值不会修改原始data数据。 并且还可以在这个回调函数用使用QueyList进行嵌套无限级采集。
返回值
返回值为Laravel中Collection
集合对象,通过它的all()
方法可转为数组。
Collection文档:https://d.laravel-china.org/docs/5.4/collections
用法
采集所有图片链接,采集目标:
$html =<<<STR
<div class="xx">
<img data-src="/path/to/1.jpg" alt="">
</div>
<div class="xx">
<img data-src="/path/to/2.jpg" alt="">
</div>
<div class="xx">
<img data-src="/path/to/3.jpg" alt="">
</div>
STR;
原始采集代码:
$data = QueryList::html($html)->rules(array(
'image' => array('.xx>img','data-src')
))->query()->getData(function($item, $key){
return $item;
});
print_r($data->all());
/**
采集结果:
Array
(
[0] => Array
(
[image] => /path/to/1.jpg
)
[1] => Array
(
[image] => /path/to/2.jpg
)
[2] => Array
(
[image] => /path/to/3.jpg
)
)
**/
添加需求
输出的数组变成一维数组,改造采集代码:
$data = QueryList::html($html)->rules(array(
'image' => array('.xx>img','data-src')
))->query()->getData(function($item){
return $item['image'];
});
print_r($data->all());
/**
采集结果:
Array
(
[0] => /path/to/1.jpg
[1] => /path/to/2.jpg
[2] => /path/to/3.jpg
)
**/
继续添加需求
补全图片链接,改造采集代码:
$baseUrl = 'http://xxxx.com';
$data = QueryList::html($html)->rules(array(
'image' => array('.xx>img','data-src')
))->query()->getData(function($item) use($baseUrl){
return $baseUrl.$item['image'];
});
print_r($data);
/**
采集结果:
Array
(
[0] => https://www.wenjiangs.com/wp-content/uploads/2021/docimg6/31-ogtfscnuovp.jpg
[1] => https://www.wenjiangs.com/wp-content/uploads/2021/docimg6/32-crqbawz5rsi.jpg
[2] => https://www.wenjiangs.com/wp-content/uploads/2021/docimg6/33-4adrvamzz11.jpg
)
**/
完整代码
<?php
require 'vendor/autoload.php';
use QL\QueryList;
$html =<<<STR
<div class="xx">
<img data-src="/path/to/1.jpg" alt="">
</div>
<div class="xx">
<img data-src="/path/to/2.jpg" alt="">
</div>
<div class="xx">
<img data-src="/path/to/3.jpg" alt="">
</div>
STR;
$baseUrl = 'http://xxxx.com';
$data = QueryList::html($html)->rules(array(
'image' => array('.xx>img','data-src')
))->query()->getData(function($item) use($baseUrl){
return $baseUrl.$item['image'];
});
print_r($data->all());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论