如何理解 QueryList 的 getdata() 方法
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
getData()
方法,其实在苏南大叔的querylist
系列前几篇文章中,也有过出镜了。本文中,对这个函数做个更加深入的解析。 getData()
方法,是用于获取querylist
采集结果数据的。
要点就是:在这里处理具体的数据getData()
之前,获取采集结果数据,需要先执行query()
方法。
回调函数:
这个getData()
也可以传递进来一个回调函数。
- 回调: $callback
可以通过这个回调函数进一步处理结果,替换内容、补全链接,下载图片等等;返回值不会修改原始data数据。
并且还可以在这个回调函数用使用QueyList
进行嵌套无限级采集。
返回值
返回值为Laravel中Collection
集合对象,通过它的->all()
方法可转为数组。
Collection文档:https://d.laravel-china.org/docs/5.4/collections
那么本节的主旨就是说:您更有可能需要$result->all()
这种类似的表述。
两个对比范例
下面的是两个对比例子。
$data = QueryList::html($html)->rules(array(
'image' => array('.xx>img','data-src')
))->query()->getData(function($item){
return $item;
});
print_r($data->all());
$data = QueryList::html($html)->rules(array(
'image' => array('.xx>img','data-src')
))->query()->getData(function($item){
return $item['image'];
});
print_r($data->all());
两者得到的结果不一样。
使用use()
传递全局函数
这个use()
并不是querylist
所特有的,是php的一个高级功能罢了。
$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);
总结
这个getdata()
方法,基本上就是对数据获取后,再次处理的一个过程。和query
还是有所区别的。苏南大叔提示您:更多文章,请点击下面的链接。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。