QueryList 如何设置采集规则 rule ?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文中,苏南大叔要介绍的是querylist
的采集规则设置方法。设置的方法也非常简单,通过设置不同的规则,就可以发挥大家的想象力了。对比原版的phpquery
,这个querylist
的设置方式,确实非常简单易懂。这一点上,不得不给querylist
的作者点赞。
本文的写作环境是: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
系列文章。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。