在ThinkPHP6中使用QueryList

随着互联网技术的不断发展,数据爬虫已经成为了人们获取信息的重要方式之一。在php的框架中,thinkphp6不仅提供了强大的数据操作功能,还为我们提供了一种名为querylist的数据抓取库来帮助我们更方便地获取数据。

QueryList是一个基于流式链式操作的PHP数据采集与处理类库,可以从HTML、XML、JSON、TXT等各种类型的文本中提取数据。本文将主要介绍在ThinkPHP6中如何使用QueryList来实现数据的抓取和处理。

1. 安装QueryList

首先,我们需要在我们的ThinkPHP6应用中安装QueryList。可以通过以下命令来使用Composer进行安装:

composer require jaeger/querylist

安装完成后,我们需要在应用的config目录下创建一个querylist.php配置文件,内容如下:

 [        'type' => 'php',        'host' => '',        'login' => '',        'password' => '',        'database' => '',        'prefix' => '',        'charset' => 'utf8',        'deploy' => 0,        'rw_separate' => false,        'master_num' => 1,        'slave_no' => '',        'fields_fix'=>"fl_",        'debug' => true,        'logfile' => 'QueryList.log',    ],];

这个配置文件是QueryList的默认配置,配置文件中的各个参数的含义和用法可以在QueryList的官方文档中查看。

立即学习“PHP免费学习笔记(深入)”;

2. 使用QueryList进行数据抓取

QueryList提供了一系列的链式操作方法来帮助我们获取和处理数据,这些方法包含了查找、筛选、提取和转换等一系列常见的数据操作。

以下是一个简单的例子,我们将使用QueryList来抓取百度首页的数据,并输出标题和链接。

use QLQueryList;$html = file_get_contents('https://www.baidu.com');$rules = [    'title' => ['title', 'text'],    'link' => ['a', 'href']];$data = QueryList::html($html)->rules($rules)->query()->getData();print_r($data->all());

以上代码片段中,我们首先使用PHP自带的file_get_contents函数获取了百度首页的源代码,然后定义了一个规则数组$rules,表示我们需要抓取的数据的类型和位置。在这个例子中,我们需要提取出网页中所有的标题和链接。

在定义好规则之后,我们将HTML文本转化成查询对象,并将规则应用到查询对象中,最后通过getData方法获取到数据。使用print_r方法来输出获取到的所有数据,我们可以看到输出的结果如下:

Array(    [0] => Array        (            [title] => 百度一下,你就知道            [link] => https://www.baidu.com/s?tn=site888_2_pg&ch=12&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=15&rsv_sug1=12&rsv_sug7=100&sug=0&prefixsug=0&rsp=0&inputT=2890&rsv_sug4=3114        )    [1] => Array        (            [title] => 新闻            [link] => https://www.baidu.com/s?cl=2&tn=site888_2_pg&ch=11&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=19&rsv_sug1=17&rsv_sug7=101&sug=0&prefixsug=news&rsp=0&inputT=2890&rsv_sug4=4085        )    [2] => Array        (            [title] => hao123_上网从这里开始            [link] => https://www.baidu.com/s?cl=3&tn=site888_2_pg&ch=6&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=25&rsv_sug1=23&rsv_sug7=100&sug=0&prefixsug=hao123&rsp=0&inputT=2890&rsv_sug4=5329        )    [3] => Array        (            [title] => 地图            [link] => https://www.baidu.com/s?cl=4&tn=site888_2_pg&ch=1&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=31&rsv_sug1=28&rsv_sug7=100&sug=0&prefixsug=map&rsp=0&inputT=2890&rsv_sug4=6166        )    [4] => Array        (            [title] => 视频            [link] => https://www.baidu.com/s?cl=5&tn=site888_2_pg&ch=8&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=37&rsv_sug1=34&rsv_sug7=100&sug=0&prefixsug=video&rsp=0&inputT=2890&rsv_sug4=7407        )    [5] => Array        (            [title] => 贴吧            [link] => https://www.baidu.com/s?cl=6&tn=site888_2_pg&ch=7&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=43&rsv_sug1=39&rsv_sug7=100&sug=0&prefixsug=tf&rsp=0&inputT=2890&rsv_sug4=8649        )    [6] => Array        (            [title] => 学术            [link] => https://www.baidu.com/s?cl=7&tn=site888_2_pg&ch=9&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=49&rsv_sug1=45&rsv_sug7=100&sug=0&prefixsug=xueshu&rsp=0&inputT=2890&rsv_sug4=9890        )    [7] => Array        (            [title] => 登录            [link] => https://passport.baidu.com/v3/?reg&redirect=http%3A%2F%2Fwww.baidu.com%2F&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F        ))

可以看到,我们已经成功地提取出了页面中的标题和链接。通过简单的链式操作,我们就可以完成数据的抓取和处理。

3. 使用QueryList进行数据存储

在进行数据抓取和处理之后,我们有可能需要将获取的数据存储到数据库中,以便后续的使用。QueryList提供了一个方便的方法来将数据存储到数据库中,以下是一个简单的例子,我们将数据存储到MySQL数据库中。

use QLQueryList;$rules = [    'title' => ['title', 'text'],    'link' => ['a', 'href']];$data = QueryList::get('https://www.baidu.com')->rules($rules)->query()->getData();$db = new     hinkDb;$affected = $db::table('test')->insertAll($data->all());echo '添加成功' . $affected . '条数据';

首先,我们定义了之前的规则数组和获取数据的方法。在这个例子中,我们使用了QueryList的get方法来获取页面的数据。获取数据后,我们首先实例化了一个数据库操作类,然后使用insertAll方法将数据批量插入到数据库中。

执行上述代码之后,我们可以在MySQL数据库中看到新插入的数据。

综上所述,在ThinkPHP6中使用QueryList能够非常方便地完成数据的抓取和处理,并且也能够很方便地将抓取到的数据存储到数据库中。QueryList的链式操作方式也非常适合数据的处理和转换。

以上就是在ThinkPHP6中使用QueryList的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/33936.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在PHP中动态生成onclick事件:字符串拼接与转义技巧
上一篇 2026年10月15日 08:10:21
mysql中删除表的语句
下一篇 2025年11月11日 09:08:16

相关推荐

  • 在PHP中动态生成onclick事件:字符串拼接与转义技巧

    本文深入探讨了在PHP中将变量动态嵌入HTML按钮的onclick事件时遇到的字符串拼接和转义难题。通过对比使用PHP单引号和双引号两种字符串处理方式,详细讲解了如何正确地构建包含PHP变量的JavaScript代码,以实现如页面跳转等功能,并强调了引用类型选择与转义规则的关键性,旨在帮助开发者避免…

    2026年10月15日
    100
  • Swoole如何实现熔断机制?熔断如何触发?

    Swoole如何实现熔断机制?熔断如何触发?Swoole如何实现熔断机制?熔断如何触发?Swoole如何实现熔断机制?熔断如何触发?Swoole如何实现熔断机制?熔断如何触发?

    Swoole实现熔断机制需基于状态机设计,利用SwooleTable共享状态,通过监控失败次数、错误率等指标,在CLOSED、OPEN、HALF_OPEN状态间流转,防止故障扩散。 Swoole实现熔断机制,说到底,就是给你的应用加一道“保险丝”,当它依赖的外部服务(比如数据库、缓存、另一个微服务)…

    2026年10月15日 • 用户投稿
    200
  • Java正则表达式如何高效提取中括号内外文本?

    Java正则表达式如何高效提取中括号内外文本?Java正则表达式如何高效提取中括号内外文本?Java正则表达式如何高效提取中括号内外文本?Java正则表达式如何高效提取中括号内外文本?

    Java字符串处理:精准提取中括号内容 在Java开发中,经常需要从字符串中提取特定信息。例如,如何从包含中括号的字符串(例如“test[10000]”)中分别提取中括号前后的文本?本文提供一种高效的解决方案,利用正则表达式实现对这类字符串的精准解析,其中“test”部分长度不限。 正则表达式是解决…

    2026年10月15日 • 用户投稿
    200
  • Swoole如何实现代码复用?复用技巧有哪些?

    Swoole如何实现代码复用?复用技巧有哪些?Swoole如何实现代码复用?复用技巧有哪些?Swoole如何实现代码复用?复用技巧有哪些?Swoole如何实现代码复用?复用技巧有哪些?

    Swoole通过常驻内存特性实现代码复用,在onWorkerStart中一次性加载类库、配置和实例,结合服务容器管理单例服务,并利用协程安全机制与协程局部存储保障并发安全,提升性能与可维护性。 在Swoole环境中,代码复用本质上是利用其常驻内存的特性,让那些原本每次请求都需要加载和初始化的资源,只…

    2026年10月15日 • 用户投稿
    300
  • 谷歌相机直出效果解析_图像处理技术与优势说明

    谷歌相机直出效果解析_图像处理技术与优势说明谷歌相机直出效果解析_图像处理技术与优势说明谷歌相机直出效果解析_图像处理技术与优势说明谷歌相机直出效果解析_图像处理技术与优势说明

    谷歌相机通过多帧合成技术提升照片细节和动态范围,1. 在按下快门时快速拍摄多张欠曝照片,保留高光细节;2. 利用算法对齐图像,消除手抖和运动带来的错位;3. 提取各帧中噪点最少、细节最佳的部分进行智能融合;4. 通过噪声抑制、鬼影消除和色调映射等技术,实现明暗均衡、细节丰富的成像效果。夜景模式(ni…

    2026年10月15日 • 用户投稿
    100
  • 快手网页版电脑入口方法 快手官网电脑版登录指南

    快手网页版电脑入口可通过官网登录,打开浏览器访问https://www.kuaishou.com,点击右上角“登录”并扫码或输入账号密码。 快手网页版电脑入口方法在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来快手官网电脑版登录指南,感兴趣的网友一起随小编来瞧瞧吧! https://www…

    2026年10月15日
    100
  • 俄罗斯市场推广秘籍:新手怎样用Yandex广告快速打开局面?

    俄罗斯市场推广秘籍:新手怎样用Yandex广告快速打开局面?俄罗斯市场推广秘籍:新手怎样用Yandex广告快速打开局面?俄罗斯市场推广秘籍:新手怎样用Yandex广告快速打开局面?俄罗斯市场推广秘籍:新手怎样用Yandex广告快速打开局面?

    Yandex广告进入俄罗斯市场需掌握本地化、精准定位与成本控制;2. 账户设置需注册Yandex账号,选合适广告类型,用俄语关键词分组,精准地理定向,设合理预算;3. 关键词选用Wordstat研究,结合长尾词与否定词,分析竞品并持续优化;4. 着陆页须与广告一致,设计简洁、加载快,设置明确CTA并…

    2026年10月15日 • 用户投稿
    500
  • 抖音私信自动回复怎么设置?抖音私信自动回复怎么设置,私信自动回复审核标准

    抖音私信自动回复怎么设置?抖音私信自动回复怎么设置,私信自动回复审核标准抖音私信自动回复怎么设置?抖音私信自动回复怎么设置,私信自动回复审核标准抖音私信自动回复怎么设置?抖音私信自动回复怎么设置,私信自动回复审核标准抖音私信自动回复怎么设置?抖音私信自动回复怎么设置,私信自动回复审核标准

    在当今信息泛滥的时代,抖音早已成为大众日常生活中不可或缺的社交平台。我们在享受短视频带来的乐趣时,也常常被不断涌入的私信所困扰。为帮助用户高效管理消息,抖音推出了私信自动回复功能。接下来,本文将为你全面解析抖音私信自动回复的设置流程,助你轻松应对粉丝互动。 一、为什么需要开启私信自动回复? 提高效率…

    2026年10月15日 • 用户投稿
    1000
  • Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」

    Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」

    大家好,很高兴再次与大家见面,我是你们的朋友全栈君。 以下是RedHat系统镜像的百度网盘分享链接: 链接:https://www.php.cn/link/3ce5f6d8606512ad3b1217e43072b9dc 提取码:bpwd RedHat 7.6版本的安装详细步骤如下: 开始安装:在启…

    2026年10月15日 • 用户投稿
    100
  • VSCode 怎样用调试快捷键组合提升单步调试效率 VSCode 快捷键组合提升调试效率的创新技巧​

    VSCode 怎样用调试快捷键组合提升单步调试效率 VSCode 快捷键组合提升调试效率的创新技巧​VSCode 怎样用调试快捷键组合提升单步调试效率 VSCode 快捷键组合提升调试效率的创新技巧​VSCode 怎样用调试快捷键组合提升单步调试效率 VSCode 快捷键组合提升调试效率的创新技巧​VSCode 怎样用调试快捷键组合提升单步调试效率 VSCode 快捷键组合提升调试效率的创新技巧​

    提升vscode单步调试效率的核心是定制快捷键并结合高级调试功能;2. 首先应自定义常用调试命令如“运行到光标处”和面板切换快捷键,减少鼠标操作;3. 善用条件断点、日志点、命中次数断点和skipfiles配置,避免不必要的单步执行;4. 通过keybindings.json深度定制符合个人习惯的快…

    2026年10月15日 • 用户投稿
    100
  • ​​2025年十大AI金融工具!投资更精准​​

    2025年ai将深度融入金融领域,提供更精准的投资决策支持。1. ai驱动的量化交易平台能实时学习市场变化,动态调整策略并预测“黑天鹅”事件,结合深度学习与自然语言处理技术分析非结构化数据以捕捉市场动向;2. 智能风险评估系统整合财务、行为及社交数据,全面评估个体风险,提升金融机构风控能力并帮助个人…

    2026年10月15日
    100
  • 苹果iPhone 17发布会日期临近 外媒预计8月26日官宣

    苹果iPhone 17发布会日期临近 外媒预计8月26日官宣苹果iPhone 17发布会日期临近 外媒预计8月26日官宣苹果iPhone 17发布会日期临近 外媒预计8月26日官宣苹果iPhone 17发布会日期临近 外媒预计8月26日官宣

    近日,有外媒披露,随着8月中旬的到来,苹果一年一度的iphone新品发布会已进入倒计时。虽然官方尚未公布具体日期,但多方预测此次活动或将定档于9月9日(星期二)。按照苹果过往习惯,通常会在发布会前约两周发出邀请函,因此业界普遍预计,苹果有望在8月26日(星期二)正式官宣发布会详情。 iPhone 1…

    2026年10月15日 • 用户投稿
    100
  • Workerman怎么进行会话共享?Workerman分布式Session?

    Workerman怎么进行会话共享?Workerman分布式Session?Workerman怎么进行会话共享?Workerman分布式Session?Workerman怎么进行会话共享?Workerman分布式Session?Workerman怎么进行会话共享?Workerman分布式Session?

    Workerman通过将Session数据存储至Redis实现分布式会话共享,避免传统PHP-FPM依赖文件存储和请求生命周期的局限;因其常驻内存、多进程隔离特性,直接使用$_SESSION会导致会话数据无法跨进程共享,故需借助外部统一存储。具体实现为:客户端通过Cookie传递Session ID…

    2026年10月15日 • 用户投稿
    000
  • 如何解决JWT令牌的生成和验证问题?使用Composer可以轻松搞定!

    可以通过以下地址学习composer:学习地址 在开发一个需要用户认证的web应用时,我遇到了一个棘手的问题:如何高效地生成和验证jwt令牌。jwt令牌是现代web应用中常用的认证机制,但其实现过程可能比较复杂,尤其是当你需要处理各种加密算法和签名验证时。 起初,我尝试了手动实现JWT的生成和验证,…

    2026年10月15日
    100
  • 荣耀X70开售 内置8300mAh超大电池 128GB售1399元

    荣耀X70开售 内置8300mAh超大电池 128GB售1399元荣耀X70开售 内置8300mAh超大电池 128GB售1399元荣耀X70开售 内置8300mAh超大电池 128GB售1399元荣耀X70开售 内置8300mAh超大电池 128GB售1399元

    荣耀手机官方宣布,旗下全新千元机型荣耀x70将于7月18日上午10点08分正式开启销售。目前该机基础版本售价1399元,使用国家补贴后可低至1189元起。 核心配置方面,荣耀X70搭载了高通第四代骁龙6移动平台,其CPU采用八核设计,具体为1×A720*2.3GHz + 3×A720*2.2GHz …

    2026年10月15日 • 用户投稿
    000
  • JavaFX TableView:为复选框单元格实现模型驱动的提示信息

    本教程详细介绍了如何在JavaFX TableView中为包含 CheckBoxTableCell 的行添加动态提示(Tooltip)。通过利用 TableView 的 setRowFactory 方法,我们可以自定义 TableRow 的行为,使其能够根据模型(Model)中的特定属性(如“rea…

    2026年10月15日
    200
  • Workerman如何实现故障恢复?Workerman自愈机制设计?

    Workerman如何实现故障恢复?Workerman自愈机制设计?Workerman如何实现故障恢复?Workerman自愈机制设计?Workerman如何实现故障恢复?Workerman自愈机制设计?Workerman如何实现故障恢复?Workerman自愈机制设计?

    Workerman的故障恢复和自愈机制,核心在于其主进程(Master)对子进程(Worker)的生命周期管理和监控。当子进程因异常退出时,主进程能够及时发现并重新拉起新的子进程,从而保证服务持续运行。这是一种基于进程守护的自愈设计,而非分布式集群层面的复杂协调。 Workerman实现故障恢复的基…

    2026年10月15日 • 用户投稿
    100
  • OPPO智行上车MG4,OPPO宣布携手上汽探索渠道合作新模式

    OPPO智行上车MG4,OPPO宣布携手上汽探索渠道合作新模式OPPO智行上车MG4,OPPO宣布携手上汽探索渠道合作新模式OPPO智行上车MG4,OPPO宣布携手上汽探索渠道合作新模式OPPO智行上车MG4,OPPO宣布携手上汽探索渠道合作新模式

    8月5日,上汽集团在杭州大会展中心举办mg品牌首款新能源战略车型——mg4的预售发布会,该车定位为“纯电智趣大两厢”。作为上汽集团的重要战略合作伙伴,oppo出席此次活动,并分享了双方在战略合作方面的最新进展及oppo智行的阶段性成果。 OPPO高级副总裁段要辉在发布会上表示,OPPO始终坚持“开放…

    2026年10月15日 • 用户投稿
    100
  • Workerman如何实现模板渲染?Workerman视图输出方法?

    Workerman如何实现模板渲染?Workerman视图输出方法?Workerman如何实现模板渲染?Workerman视图输出方法?Workerman如何实现模板渲染?Workerman视图输出方法?Workerman如何实现模板渲染?Workerman视图输出方法?

    Workerman通过集成第三方模板引擎实现视图渲染,核心步骤是引入引擎(如Twig)、初始化环境、数据填充与渲染、发送HTML响应;以Twig为例,需通过Composer安装,配置模板路径和缓存目录,在onMessage中调用render方法生成HTML并响应客户端。 Workerman本身作为一…

    2026年10月15日 • 用户投稿
    200
  • Workerman怎么进行调试?Workerman调试模式开启方式?

    Workerman怎么进行调试?Workerman调试模式开启方式?Workerman怎么进行调试?Workerman调试模式开启方式?Workerman怎么进行调试?Workerman调试模式开启方式?Workerman怎么进行调试?Workerman调试模式开启方式?

    调试Workerman需结合PHP错误报告与日志机制,开发时开启error_reporting(E_ALL)和display_errors=’on’,并使用Config::$debug = true启用框架调试模式;通过Monolog等日志库记录带请求ID的结构化日志,便于追…

    2026年10月15日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信