首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用QueryList轻松提取HTML中所有图片地址 | PHP爬虫实战小记

用QueryList轻松提取HTML中所有图片地址 | PHP爬虫实战小记

原创
作者头像
高老师
发布2025-11-29 16:22:18
发布2025-11-29 16:22:18
100
举报

用QueryList轻松提取HTML中所有图片地址 | PHP爬虫实战小记

今天在学习PHP爬虫相关知识时,遇到了一个常见需求:从一段HTML代码中精准提取所有img标签的图片地址。经过尝试,发现QueryList这个PHP采集工具能完美解决这个问题,代码简洁又高效,特意记录下来分享给有需要的小伙伴。

一、QueryList是什么?

先简单科普下,QueryList是基于PHPQuery开发的一套简洁、优雅的PHP采集工具,它融合了jQuery的选择器语法,让我们可以像操作前端DOM一样轻松解析HTML/XML,无需再手写复杂的正则表达式,极大降低了网页数据提取的门槛。

二、实战需求:提取HTML中所有img的图片地址

1. 前期准备

首先需要确保项目中已经安装了QueryList,推荐使用Composer安装:

代码语言:bash
复制
composer require jaeger/querylist

2. 核心代码实现

假设我们有一段包含图片的HTML代码(比如爬取到的文章封面、内容区域),需要提取其中所有img标签的src属性(图片地址),核心代码如下:

代码语言:php
复制
<?php
require 'vendor/autoload.php'; // 引入Composer自动加载文件

use QL\QueryList;

// 模拟待解析的HTML内容(实际场景中可替换为爬取到的网页源码)
$cover = '
<div class="content">
    <img src="https://example.com/img1.jpg" alt="图片1">
    <p>这是一段测试文本</p>
    <img src="https://example.com/img2.png" layer-src="https://example.com/img2_hd.png" alt="图片2">
    <div class="img-box">
        <img src="https://example.com/img3.gif" alt="图片3">
    </div>
</div>
';

// 第一步:使用QueryList解析HTML,提取所有img标签的src属性
// find('img') 匹配所有img标签,attrs('src') 获取标签的src属性值
$imgLayerSrcs = QueryList::html($cover)->find('img')->attrs('src');

// 第二步:将QueryList返回的Collection对象转换为纯PHP数组
$layerSrcArray = $imgLayerSrcs->toArray();

// 打印结果,查看提取的图片地址
var_dump($layerSrcArray);

3. 代码解析

  • QueryList::html($cover):将待解析的HTML字符串传入QueryList,初始化解析对象;
  • find('img'):使用jQuery风格的选择器匹配所有img标签;
  • attrs('src'):提取匹配到的所有img标签的src属性值,返回的是QueryList封装的Collection集合对象;
  • toArray():将Collection对象转换为普通的PHP数组,方便后续遍历、存储等操作。

4. 扩展:提取自定义属性(比如layer-src)

如果需要提取img标签的自定义属性(比如示例中的layer-src),只需修改attrs的参数即可:

代码语言:php
复制
// 提取layer-src属性
$imgLayerSrcs = QueryList::html($cover)->find('img')->attrs('layer-src');
$layerSrcArray = $imgLayerSrcs->toArray();
// 注意:如果标签没有该属性,对应位置会返回null,可后续过滤
$layerSrcArray = array_filter($layerSrcArray); // 过滤null值

三、运行结果

执行上述核心代码后,var_dump会输出如下结果:

代码语言:bash
复制
array(3) {
  [0]=>
  string(24) "https://example.com/img1.jpg"
  [1]=>
  string(24) "https://example.com/img2.png"
  [2]=>
  string(24) "https://example.com/img3.gif"
}

四、总结

QueryList凭借jQuery风格的选择器,让PHP解析HTML变得极其简单。今天这个提取图片地址的小案例,只是QueryList众多功能的冰山一角,它还支持动态页面爬取、数据筛选、分页采集等高级功能。

对于PHP初学者来说,不用再纠结正则表达式的复杂语法,直接用QueryList就能快速实现常见的爬虫需求,大大提升开发效率。后续我也会继续学习QueryList的其他功能,分享更多实战技巧~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用QueryList轻松提取HTML中所有图片地址 | PHP爬虫实战小记
    • 一、QueryList是什么?
    • 二、实战需求:提取HTML中所有img的图片地址
      • 1. 前期准备
      • 2. 核心代码实现
      • 3. 代码解析
      • 4. 扩展:提取自定义属性(比如layer-src)
    • 三、运行结果
    • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档