我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

getData()方法,其实在苏南大叔的querylist系列前几篇文章中,也有过出镜了。本文中,对这个函数做个更加深入的解析。 getData()方法,是用于获取querylist采集结果数据的。

苏南大叔:如何理解 QueryList 的 getdata() 方法 - querylist-getdata
如何理解 QueryList 的 getdata() 方法(图1-1)

要点就是:在这里处理具体的数据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还是有所区别的。苏南大叔提示您:更多文章,请点击下面的链接。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   querylist