QueryList
是一个基于phpQuery
的通用列表采集类,是一个简单、 灵活、强大的采集工具,采集任何复杂的页面 基本上就一句话就能搞定了。
通过composer
安装:
composer require jaeger/querylist
更多安装方法:QueryList多种安装方式
下面演示QueryList
用一句代码采集百度搜索结果:
//获取采集对象
$hj = QueryList::Query('http://www.baidu.com/s?wd=QueryList',array(
'title'=>array('h3','text'),
'link'=>array('h3>a','href')
));
//输出结果:二维关联数组
print_r($hj->data);
上面的代码实现的功能是采集百度搜索结果页面的所有搜索结果的标题
和链接
,然后分别以二维关联数组的格式输出。
采集结果:
Array
(
[0] => Array
(
[title] => QueryList|基于phpQuery的无比强大的PHP采集工具
[link] => http://www.baidu.com/link?url=IIsMhpzI2PylnmW8vPALcwIfJgHhKFu2SWXEj7yQ-6o7KStbLfmuoWGmalpx1xYE
)
[1] => Array
(
[title] => 介绍- QueryList指导文档
[link] => http://www.baidu.com/link?url=edktLqt6f9KwYJ6oip1EDXvwIXh-nHcFImVJeqRm56-VU3zIcqLRYeM83VyYQE_X
)
//省略....
)
返回值:QueryList对象
Query方法为QueryList
唯一的主方法,用静态的方式调用。
原型:
QueryList::Query($page,array $rules, $range = '', $outputEncoding = null, $inputEncoding = null,$removeHead = false)
中文解释:
QueryList::Query(采集的目标页面,采集规则[,区域选择器][,输出编码][,输入编码][,是否移除头部])
//采集规则
$rules = array(
'规则名' => array('jQuery选择器','要采集的属性'[,"标签过滤列表"][,"回调函数"]),
'规则名2' => array('jQuery选择器','要采集的属性'[,"标签过滤列表"][,"回调函数"]),
..........
[,"callback"=>"全局回调函数"]
);
//注:方括号括起来的参数可选
查看文档:http://doc.querylist.cc/site/index/doc/11
Request 网络操作扩展
可以实现如携带cookie、伪造来路等任意复杂的网络请求,再也不用担心QueryList内置的抓取功能太弱了。
Login 模拟登陆扩展
可以实现模拟登陆然后采集。
Multi 多线程插件
多线程(多进程)采集扩展。
DImage图片下载扩展
可实现简单的图片下载需求。
扩展安装以及使用教程:QueryList扩展文档,获取更多扩展可以关注QueryList
社区和交流群。
1.QueryList
内置的只是简单的源码抓取方法,遇到更复杂的抓取情况,如:需要登陆
身份验证 时,请配合其它的PHP的HTTP工具(推荐使用Guzzle)来使用,通过将辅助的HTTP类抓取到的网页源码传给QueryList
即可。
2.采集程序请在PHP命令行模式(PHP CLI)下运行。
3.QueryList
依赖phpQuery
,phpQuery
项目主页:phpQuery文档
-
QueryList交流社区: http://querylist.cc/
-
QueryList文档: http://doc.querylist.cc/
Jaeger JaegerCode@gmail.com
QueryList is licensed under the license of MIT. See the LICENSE for more details.