烨竹
首先解释标题:
艺术==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)
[
Original url: Access
Created at: 2018-10-10 15:29:05
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论