通常情况下我们会先采集列表页,然后再循环采集列表中的每篇文章,采集列表需要用到range()函数来配合rules()函数。

如图我们要采集IT之家的文章列表,我标记了不同的颜色来分解页面元素:

蓝色区域:我们要采集的整个列表
红色区域:列表中的每一条文章
黄色区域:我们要采集的每条文章的元信息,标题、文章链接、简介以及缩略图
首先要分析出红色区域的选择器,我们称之为切片选择器或范围选择器,也就是range 。如图,利用浏览器的开发者工具可以很容易分析出切片选择器为:.ulcl>li,然后我们需要在这每个切片区域中去采集文章的标题、文章链接、简介以及缩略图,利用同样的方式分析出每个元素的选择器,这里不再赘述,最终列表采集代码为:

采集代码:

use QL\QueryList;
$url = 'https://it.ithome.com/ityejie/';
$rules = [
​    'title' => ['h2>a','text'],// 采集文章标题
​    'link' => ['h2>a','href'],// 采集链接
​    'img' => ['.list_thumbnail>img','src'],// 采集缩略图
​    'desc' => ['.memo','text']// 采集文档简介
];// 元数据采集规则
$range = '.content li';// 切片选择器
$rt = QueryList::get($url)->rules($rules)->range($range)->query()->getData();
print_r($rt->all());

采集结果:

Array(
​    [0] => Array​        (​[title] =>   [link] =>  [img] =>  [desc] => )[1] => Array        ([title] => 快讯:iOS版QQ大面积闪退(网友反映已恢复)[link] => https://www.ithome.com/html/it/358734.htm[img] => //img.ithome.com/images/v2/grey.gif[desc] => iOS版QQ大面积闪退,原因未知。目前根据IT之家的网友反映,目前iOS版本的QQ已经恢复,但是近期的消息记录已经消失)[2] => Array        ([title] => 阿里影业公布截至近15个月业绩:营收33亿元,增幅130%[link] => https://www.ithome.com/html/it/358728.htm[img] => //img.ithome.com/images/v2/grey.gif[desc] =>  阿里影业集团公布截至2018年3月31日的十五个月财务业绩:报告期内公司营业收入达到33.03亿元,较上一年同期十五个月的14.32亿元,增长幅度超130%)// ....
)

数据是采集回来了,但我们发现有一点瑕疵,结果里面有一条结果是空的,且文章缩略图链接不正确。

如图我们再次分析页面可以得知,第一条切片区域是广告,所以采集的第一条结果为空;而文章列表的缩略图使用了懒加载,所以图片的真正链接在img的data-original属性上,修正后的代码如下:

采集代码:

use QL\QueryList;
$url = 'https://it.ithome.com/ityejie/';
$rules = [
​    'title' => ['h2>a','text'],// 采集文章标题
​    'link' => ['h2>a','href'],// 采集链接
​    'img' => ['.list_thumbnail>img','data-original'],// 采集该页的图片链接属性
​    'desc' => ['.memo','text']// 采集文档简介
];// 元数据采集规则
$range = '.content li:gt(0)';// 切片选择器,跳过第一条广告
$rt = QueryList::get($url)->rules($rules)​ ->range($range)->query()->getData();
print_r($rt->all());

采集结果:

Array([0] => Array        ([title] => 快讯:iOS版QQ大面积闪退(网友反映已恢复)[link] => https://www.ithome.com/html/it/358734.htm[img] => //img.ithome.com/newsuploadfiles/thumbnail/2018/5/358734_240.jpg[desc] => iOS版QQ大面积闪退,原因未知。目前根据IT之家的网友反映,目前iOS版本的QQ已经恢复,但是近期的消息记录已经消失)[1] => Array        ([title] => 阿里影业公布截至近15个月业绩:营收33亿元,增幅130%[link] => https://www.ithome.com/html/it/358728.htm[img] => //img.ithome.com/newsuploadfiles/thumbnail/2018/5/358728_240.jpg[desc] =>  阿里影业集团公布截至2018年3月31日的十五个月财务业绩:报告期内公司营业收入达到33.03亿元)// ....
)

就这样采集到了IT之家的文章列表以及文章内容

querylist V4 列表采集相关推荐

  1. 简单记录thinkphp5使用Querylist插件做采集

    源码地址:https://github.com/LeeToug/NewsGather 最近公司需要做一个信息发布网站,任务分配下来之后确定我来主导这个项目.由于之前做小说采集网站的时候多用的是CMS自 ...

  2. 基于lucene的案例开发:纵横小说章节列表采集

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44854719 http://www.llwjy.com/blogdetail/d ...

  3. querylist V4 图片下载

    采集代码: //采集并下载ZOL桌面壁纸. 扩展一个图片下载功能. 参1:$path 本地保存路径 $ql = QueryList::bind('downloadImage',function ($p ...

  4. 前嗅教程:通过子栏目进入链接列表采集正文数据

    第一步:新建任务 ①点击左上角"加号"新建任务,如图1: [图1] ②在弹窗里填写采集地址,任务名称,如图2: [图2] ③点击下一步,选择进行数据抽取还是链接抽取,本次采集当前页 ...

  5. 【京东】商品列表采集

    采集场景 在京东搜索页 https://search.jd.com/Search 输入关键词搜索,采集搜索后得到的多个商品列表数据. 鼠标放到图片上,右键,选择[在新标签页中打开图片]可查看高清大图 ...

  6. 天猫php采集列表,QueryList: QueryList是一个基于phpQuery的通用列表采集类,是一个简单、 灵活、强大的采集工具,采集任何复杂的页面 基本上就一句话就能搞定了。...

    #QueryList交流社区: http://querylist.cc/ #QueryList文档: http://doc.querylist.cc/ #QueryList交流QQ群:12326696 ...

  7. QueryList 4.0 简洁、优雅、可扩展的PHP采集工具(爬虫)

    QueryList 简介 QueryList是一套简洁.优雅.可扩展的PHP采集工具(爬虫),基于phpQuery. 特性 拥有与jQuery完全相同的CSS3 DOM选择器 拥有与jQuery完全相 ...

  8. QueryList是一套简洁、优雅的PHP采集工具(爬虫),基于phpQuery。

    QueryList是一套简洁.优雅的PHP采集工具(爬虫),基于phpQuery. 特性: 拥有与jQuery完全相同的CSS3 DOM选择器 拥有与jQuery完全相同的DOM操作API 拥有通用的 ...

  9. PHP采集器querylist

    官方文档链接 官方连接:http://www.querylist.cc/ 注意事项 如果composer安装 建议切换一下镜像地址,因为阿里云镜像会提示 输入账号和密码的诡异操作 E:\phpstud ...

最新文章

  1. SAP HUM 如何将2个HU合并并成一个?
  2. Leetcode 92 反转链表 II (每日一题 20210726)
  3. java 事务 数据库 事务_Java数据库编程——事务
  4. 使用RMAN备份控制文件(control file)和系统参数文件(spfile)
  5. php设计模式的六大原则(二):开闭原则
  6. 定时任务重启后执行策略_C语言操作时间函数time.ctime,实现定时执行某个任务小例子...
  7. matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~...
  8. client中周期性边界_FLUENT创建周期性边界条件方法
  9. 利用接口做参数,写个计算器,能完成加减乘除运算。 (1)定义一个接口Compute含有一个方法int computer(int n, int m)。 (2)设计四个类分
  10. 天线越大越好吗_无线路由知识误区!解读天线数量与信号强弱的关系
  11. 【机器学习-西瓜书】九、K-means;聚类算法划分
  12. python是什么意思中文-python是什么意思中文翻译
  13. hdu 4609 3-idiots——FFT
  14. 12306排队是什么意思_12306抢票显示排队中怎么办
  15. Linux修改网络配置
  16. 完整的ACSII编码表
  17. Python爬取链家租房信息
  18. The Little Schemer Fourth Edition,笔记01
  19. PHP + elasticsearch的使用方法,PHP使用ES的超级简单方法
  20. 系统架构师(软考)------网络互联模型与常见的网络协议

热门文章

  1. dirac hd sound的奇特“减法”技术
  2. 欢迎体验 Android 10!
  3. 使用HTML5拖拽实现表格列移动
  4. CASS实用操作:绘制房子与绿地
  5. 拼多多 算法工程师-20180921
  6. java date.getdate_java – 获取昨天 – 不推荐使用Date类型的方法getDate()
  7. [博学谷学习记录]超强总结,用心分享|第16节 集合续-----笔记篇
  8. 自己制作“EleksTubeIPS创意复古RGB拟辉光管时钟”分享《四》-(持续更新2022-2-28)
  9. 在/mnt/看不到共享文件夹的解决
  10. 太空射击第16课: 道具(Part 2)