为'艺术'而生的'小妾'工具--QueryList
烨竹
首先解释标题:
艺术==laravel(这里不能用"三"等于,不然有人说我语法错误)
小妾==中国有句老话:妻不如妾,妾不如偷,偷不如偷不到;妻就是原配(自己写的源代码),妾就是QueryList,偷当然就是小偷程序,偷不到就是你花钱别人也不会把小偷程序的源码给你;再者说了,'偷'在中国古代艺术的叫法是什么--“qie”;
简介:
Querylist其实就是一款网页采集的第三方工具类;
特点:简单,强大,现代;
缺点:再怎么优秀也只是一款第三方工具,感觉人气不高(估计爬取网页都去用py了)。
总结
具体用法做个总结就是:确定你需要爬取得内容,配置爬取规则,执行爬取;
官方文档做个总结:安装,简单爬取,Dom爬取,插件相关,示例
这里引用官方文档对上面的总结进行说明:
//简单爬取
<?php
require 'QueryList/vendor/autoload.php';
use QL\QueryList;
$html = <<<STR
<div id="one">
<div class="two">
<a href="http://querylist.cc">QueryList官网</a>
<img src="http://querylist.com/1.jpg" alt="这是图片">
<img src="http://querylist.com/2.jpg" alt="这是图片2">
</div>
<span>其它的<b>一些</b>文本</span>
</div>
STR;
$rules = array(
//采集id为one这个元素里面的纯文本内容
'text' => array('#one','text'),
//采集class为two下面的超链接的链接
'link' => array('.two>a','href'),
//采集class为two下面的第二张图片的链接
'img' => array('.two>img:eq(1)','src'),
//采集span标签中的HTML内容
'other' => array('span','html')
);
$data = QueryList::html($html)
->rules($rules)
->query()
->getData();
print_r($data->all());
对querylist简单理解
下载和引入querylist扩展
composer require jaeger/querylist
require 'vendor/autoload.php';
use QLQueryList;
获取采集目标(大多数情况为页面的html代码)
把html源码添加进querylist类中--html($html)
从querylist类中拉出html代码(这个函数只会拉去所有的html代码)
确定需要采集的类容--rules(array $rules)
对采集的数据进行一致性处理--range($selector),便于数据的应用
根据需要移除头部处理--removeHead()
执行采集规则rules--query()并且可以修改采集到的数据,无限极分类
获取到采集数据--getData()
QueryList单一实例--getInstance()
多QueryList共存的场景-- new QueryList()
释放资源,销毁内存占用--destruct()
根据Dom获取采集目标->fimd()
有一点很遗憾:他的DOM(特殊API,也可以算是对象)只是做了简单介绍,如果文档能在这方面进行完善,估计这一款第三方扩展能更上一层楼;
\$ql = QueryList::get('http://www.baidu.com/s?wd=QueryList');
//获取所有h3标签下的a标签的文本
\$data = \$ql->find('h3>a')->texts();
print_r(\$data->all());
//获取页面中所有图片地址
\$data = \$ql->find('img')->attrs('src');
print_r($data->all());
强大的插件扩展:
url处理插件--get($url,$args = null,$otherArgs = [])
post表单提交--post($url,$args = null,$otherArgs = [])
编码转换--encoding(string $outputEncoding,string $inputEncoding = null)
转换URL相对路径到绝对路径--absoluteUrl($baseUrl): 转换页面所有Url为绝对路径,return QueryList
--absoluteUrlHelper($baseUrl,$relativeUrl): 单链接转换帮助函数,return string
Curl多线程采集--CurlMulti 插件
JavaScript动态渲染的页面--PhantomJS插件
搜索引擎插件--百度谷歌
插件相关的API:
设置采集结果数据(此方法紧提供给插件使用)--setData(Collection $data)
生成一个新的插件--bind(string $name,Closure $provide)
使用插件-- use($plugins,…$opt)
插件全局配置--Config use($plugins,…$opt)