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

本文中,苏南大叔要描述的是:querylistremoveHead()query()方法。removeHead()用于解决可能存在的乱码问题,另外一个query()用于在获得数据之前,对最终的语句的预处理。

QueryList 如何利用 removeHead 和 query 方法,预处理数据 - 数据预处理
QueryList 如何利用 removeHead 和 query 方法,预处理数据(图1-1)

removeHead()方法的使用范例

querylist里面有个非常奇怪的removeHead()方法,粗略的看上去的话,是非常的奇怪。那么官方的说明是这么说的:这个方法可以把$html中的head区域删除,然后在进行数据处理的,据说目的是解决乱码问题。那么,苏南大叔理解着是不是就是去掉<meta charset=utf8>这样的代码字样呢?

不过,在querylist之中,处理乱码问题,并不仅仅是这个方案哦,removeHead()仅仅是个备选方案。更多的方案,还是那句老话,请关注苏南大叔的后续文章。

先使用rules()静态方法,来创建一个$ql对象。通过setHtml()设置html后,调用了removeHead()方法,最终获得匹配数据。

$html = file_get_contents('http://www.baidu.com/s?wd=QueryList');
$ql = QueryList::rules([
    'title'=>array('h3','text'),
    'link'=>array('h3>a','href')
]);
$data = $ql->setHtml($html)->removeHead()->query()->getData();
print_r($data);

query()方法

query()方法,执行采集规则rules,执行完这个方法后才可以用getData()方法获取到采集数据。苏南大叔理解着:就是对采集到的数据的一个预处理过程。

  • 参数: $callback
    可以通过这个回调函数进一步处理结果,替换内容、补全链接,下载图片等等;返回值会修改原始data数据。
    并且还可以在这个回调函数用使用QueyList进行嵌套无限级采集。

使用范例:

$ql = QueryList::get('http://www.baidu.com/s?wd=QueryList')->rules([
    'title'=>array('h3','text'),
    'link'=>array('h3>a','href')
]);
$data = $ql->query(function($item){
    $item['title'] = $item['title'].' - other string...';
    return $item;
})->getData();
print_r($data->all());

query()触发查询,同时还可以传递进入一个回掉函数$callback,对拿到的数据,进行进一步处理。

总结

对数据的预处理,是querylist的一个非常重要的功能,在这个功能中,数据会变得更加可控。好了,更多querylist的相关经验文章,请点击苏南大叔的经验文件链接即可。

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

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

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

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