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还是有所区别的。苏南大叔提示您:更多文章,请点击下面的链接。

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

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

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

本站的忠实读者小伙伴,正在阅读下面这些文章:

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!