当前位置: 首页 > news >正文

ThinkPHP8中使用QueryList---QueryList 简洁、优雅、可扩展的PHP采集工具(爬虫)

ThinkPHP8中使用QueryList

  • 一、‌安装QueryList‌
  • 二、‌基础采集示例
  • 三、采集结果

一、‌安装QueryList‌

通过Composer安装最新版QueryList:

composer require jaeger/querylist

二、‌基础采集示例

引用QueryList;

use QL\QueryList;public function crawl(){//采集百度搜索结果列表的标题和链接:// $data = QueryList::get('http://www.baidu.com/s?wd=QueryList')//     // 设置采集规则//     ->rules([ //         'title'=>array('h3','text'),//         'link'=>array('h3>a','href')//     ])//     ->query()->getData();// dd($data->all());//采集「昵图网」所有图片地址$img=QueryList::get('http://www.nipic.com')->find('img')->attrs('src');dd($img);
}

由于PHP 8.1及以上版本的严格类型检查导致的兼容性问题,具体表现为GuzzleHttp的CookieJar类实现了IteratorAggregate接口,但其getIterator()方法以及count()的返回类型声明与接口不兼容,会导致报错,有以下解决方案供参考:

CookieJar文件路径:/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php

‌1,降级PHP版本‌:
将PHP版本降级到8.0或以下可以暂时解决这个问题。

2‌,修改代码‌(临时解决方案):
在CookieJar类的count()和getIterator()方法上添加#[\ReturnTypeWillChange]属性来临时抑制这个通知。修改后的代码应该类似:

#[\ReturnTypeWillChange]
public function count()
{return count($this->cookies);
}
#[\ReturnTypeWillChange]
public function getIterator()
{return new \ArrayIterator(array_values($this->cookies));
}

3,‌更新依赖库‌(长期解决方案):
检查并更新GuzzleHttp库到最新版本,因为新版本可能已经修复了这个兼容性问题。

4,严格类型声明‌(长期解决方案):
修改方法签名以符合接口要求

public function getIterator(): \Traversable
{return new \ArrayIterator($this->cookies);
}

三、采集结果

在这里插入图片描述

相关文章:

  • Spring Bean的初始化过程是怎么样的?​​
  • Vue 实例的数据对象详解
  • 阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
  • Django、Flask、FastAPI与Jupyter对比
  • leetcode73-矩阵置零
  • 如何进行Shopify主题的自定义
  • 【Pandas】pandas DataFrame ffill
  • (七) 深度学习进阶:现代卷积神经网络技术解析与应用实践
  • 突破原生整数范围限制:C++高精度乘法算法模板的实现与优化
  • 启动已有小程序项目
  • 论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
  • C#最佳实践:为何优先使用as或is而非强制转换
  • DeFi模式:去中心化金融架构与流动性池设计
  • Android Kotlin 协程详解
  • Android 开发中配置 USB 配件模式(Accessory Mode) 配件过滤器的配置
  • Map相关知识
  • 循环语句之for
  • 【系统架构设计师-2025上半年真题】综合知识-参考答案及部分详解(回忆版)
  • 数据挖掘是什么?数据挖掘技术有哪些?
  • 2025.06.09【读书笔记】|PromptBio:让生信分析更简单的AI平台
  • 如何制作一个二维码/seo网站推广排名
  • 江门网站建设 卓华/地推拉新app推广怎么做
  • 网站开发模式/大连网站seo
  • 设计说明100字/seo 优化一般包括哪些内容
  • 网站建设公司兴田德润i简介/阿里云域名查询
  • 做神马网站优化快速排名软件/深圳网络推广最新招聘