为'艺术'而生的'小妾'工具--QueryList | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

[为'艺术'而生的'小妾'工具--QueryList | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区]

烨竹

首先解释标题:
艺术==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)

[

](https://upload-images.jianshu.io/upload_images/11994491-00db16f1c3830cd0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


Original url: Access

Created at: 2018-10-10 15:29:05

Category: default

Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论