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

本文中,苏南大叔要介绍的是querylist的采集规则设置方法。设置的方法也非常简单,通过设置不同的规则,就可以发挥大家的想象力了。对比原版的phpquery,这个querylist的设置方式,确实非常简单易懂。这一点上,不得不给querylist的作者点赞。

QueryList 如何设置采集规则 rule ? - 规则设置
QueryList 如何设置采集规则 rule ?(图1-1)

本文的写作环境是:php7.2.1,querylist4.0.3

querylist 设置采集规则

querylist的采集规则非常浅显易懂。基本的采集规则的单位是这样的:

'规则名' => array('jQuery选择器','要采集的属性'[,"标签过滤列表"][,"回调函数"]),

采集规则是上述规则单位的php数组的一系列组合。

querylist 采集规则解释

字段类型必填注释
规则名string任意不重复字符串
jQuery选择器string要选择的元素选择器
要采集的属性string任意html元素属性
标签过滤列表string设置要过滤的内容
回调函数Closure用于对数据做额外处理

采集规则范例

下面的例子是官方提供的例子,很好理解:

//采集规则
$rules = [
    //采集img标签的src属性,也就是采集页面中的图片链接
    'name1' => ['img','src'],
    //采集class为content的div的纯文本内容,
    //并移除内容中的a标签内容,移除id为footer标签的内容,保留img标签
    'name2' => ['div.content','text','-a -#footer img'],
    //采集第二个div的html内容,并在内容中追加了一些自定义内容
    'name3' => ['div:eq(1)','html','',function($content){
        $content += 'some str...';
        return $content;
    }]
];

简要解释说明

下面单独解释几个复杂的字段。

要采集的属性

值为以下3种:

  • text:返回当前选中标签下面的纯文本
  • html:返回当前选中标签下面的html片段
  • [HTML标签属性]:如src、href、name、data-src等任意HTML标签属性名

标签过滤列表

设置此选项可用来过滤不想要的内容,多个值之间用空格隔开,有如下2条规则:

  • 当标签名前面添加减号(-)时(此时标签可以为任意的jQuery选择器),表示移除该标签以及标签内容。
  • 当标签名前面没有减号(-)时,当 [要采集的属性] 值为text时表示需要保留的HTML标签以及内容,为html时表示要过滤掉的HTML标签但保留内容。

使用范例

设置好html,设置好rule,就可以匹配相关数据文本了。

$ql = QueryList::html($html)->rules($rules)->query();
$data = $ql->getData();
print_r($data->all());

总结

本文的主要内容,就是设置$rules这个属性了。更多querylist的相关经验文章,请查看苏南大叔的querylist系列文章。

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

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

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

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

苏南大叔需要你的支持

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