【Puppeteer 实战】自动登录后台并分页提取表格数据(含 50 条/页切换)

本文通过一个完整示例,演示如何使用Puppeteer自动访问后台系统、设置 Cookie、切换分页大小,并循环点击「下一页」抓取所有表格 HTML 数据。


一、应用场景说明

在实际项目中,我们经常遇到以下需求:

  • 后台系统需要登录才能访问
  • 数据列表有分页,需要自动翻页
  • 希望批量抓取每一页的表格数据
  • 页面基于 Element UI(el-pagerbtn-next

本文将一步步实现:

✅ 打开后台页面
✅ 使用 Cookie 模拟登录
✅ 切换为50 条/页
✅ 自动计算总页数
✅ 循环点击「下一页」
✅ 抓取所有表格 HTML


二、环境准备

1. 安装 Puppeteer

npminstallpuppeteer

2. Node.js 版本

建议使用:

  • Node.js ≥ 14
  • Puppeteer ≥ 19

三、完整示例代码

下面是完整可运行的示例代码:

constpuppeteer=require('puppeteer');constfs=require('fs');// 封装一个延时方法functionwaitForTimeout(time){returnnewPromise(resolve=>setTimeout(resolve,time));}(async()=>{constbrowser=awaitpuppeteer.launch({headless:false// 关闭无头模式,方便调试});try{constpage=awaitbrowser.newPage();awaitpage.setViewport({width:1920,height:800});// 1. 进入后台登录页面awaitpage.goto('http://localhost:8093/admin');// 2. 设置登录 Cookie(模拟已登录)constcookies=[{name:'Admin-Token',value:'你的 token',domain:'localhost',path:'/'}];// 如果需要启用 Cookie,取消注释// await page.setCookie(...cookies);// 3. 跳转到数据列表页awaitpage.goto('http://localhost:8093/category');// 4. 切换分页大小为 50 条/页constpageSizeXPath='//span[text()="50条/页"]';awaitpage.waitForXPath(pageSizeXPath);const[pageSizeBtn]=awaitpage.$x(pageSizeXPath);if(pageSizeBtn){awaitpageSizeBtn.evaluate(el=>el.click());console.log('已切换为 50 条/页');}// 5. 获取总页数awaitpage.waitForSelector('ul.el-pager');constliElements=awaitpage.$$('ul.el-pager li');constlastLi=liElements[liElements.length-1];lettotalPages=1;if(lastLi){totalPages=parseInt(awaitpage.evaluate(li=>li.textContent,lastLi));console.log('总页数:',totalPages);}// 6. 循环点击下一页并抓取表格consttableSelector='table';constnextBtnSelector='button.btn-next';awaitpage.waitForSelector(nextBtnSelector,{visible:true});letcurrentPage=1;letallTableHTML='';while(currentPage<=totalPages){console.log(`正在抓取第${currentPage}`);// 抓取当前页表格consttables=awaitpage.$$(tableSelector);for(consttableoftables){consthtml=awaittable.evaluate(el=>el.outerHTML);allTableHTML+=html+'\n\n';}// 点击下一页constnextBtn=awaitpage.$(nextBtnSelector);if(!nextBtn)break;awaitnextBtn.click();awaitwaitForTimeout(3000);currentPage++;}console.log('分页抓取完成');// 7. 可选:保存为 HTML 文件fs.writeFileSync('tables.html',allTableHTML,'utf-8');console.log('表格 HTML 已保存到 tables.html');// await browser.close();}catch(e){console.error('发生错误:',e);}})();

四、关键代码讲解

1️⃣ 模拟登录(Cookie)

awaitpage.setCookie({name:'Admin-Token',value:'xxx',domain:'localhost',path:'/'});

适用于:

  • 后台 token 登录
  • 无需输入账号密码
  • 常见于 Vue / Element UI 项目

2️⃣ XPath 精准点击「50条/页」

constxpath='//span[text()="50条/页"]';const[el]=awaitpage.$x(xpath);awaitel.evaluate(e=>e.click());

优点:

  • 不依赖 class
  • 文本唯一即可定位

3️⃣ 获取 Element UI 总页数

ul.el-pager li:last-child

Element UI 的分页结构非常规整,最后一个li就是最大页数。


4️⃣ 自动翻页核心逻辑

while(currentPage<=totalPages){awaitnextBtn.click();awaitwaitForTimeout(3000);}

建议:

  • 使用显式等待
  • 避免点击过快导致请求丢失

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端核心知识:Vue 3 编程的 10 个实用技巧

Vue 3 编程的 10 个实用技巧 &#xff08;2025-2026 年后端转前端 / 中高级开发者最常使用的写法&#xff09; 以下 10 个技巧几乎覆盖了目前绝大部分中大型 Vue 3 项目中最实用、最能提升代码质量和开发效率的部分&#xff0c;按“日常使用频率”从高到低排序。 排名技巧名称…

2026年市面上专业的换热器供应商哪家强,高大空间循环制热机组/表冷换热器/空调换热器/空调机组,换热器品牌联系电话 - 品牌推荐师

随着全球工业4.0进程加速及绿色建筑需求激增,空调换热器作为暖通系统的核心部件,其技术迭代与供应链稳定性成为行业关注的焦点。2025年数据显示,中国空调换热器市场规模突破380亿元,年复合增长率达7.2%,但市场仍存…

太古里火锅风向标:成都口碑火锅,让你舌尖狂欢!美食/特色美食/社区火锅/烧菜火锅/火锅,成都火锅品牌排行 - 品牌推荐师

成都火锅以“麻、辣、鲜、香”著称,是川派饮食文化的核心符号。2025年,随着太古里商圈成为全国游客的打卡地标,周边火锅市场竞争愈发激烈。消费者在选择时,既需考虑口味正宗性,也需关注品牌口碑、服务体验及性价比…

ssm424面向社区健康服务的医疗平台--论文

目录摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着人口老龄化和慢性病患病率的上升&#xff0c;社区健康服务在医疗卫生体系中的作用日益凸显。传统的医疗服务模式难以满足社区居民多元化、个性化的健康需求&am…

2026年压力容器法兰优选指南:这些厂家凭实力上榜,变压器法兰/非标法兰/不锈钢法兰/锻件,压力容器法兰工厂怎么选择 - 品牌推荐师

行业现状与法兰核心价值解析 压力容器法兰作为工业管道系统的关键连接部件,其质量直接影响设备运行的稳定性与安全性。当前,行业呈现技术迭代加速、定制化需求激增、环保标准趋严三大趋势。具备全品类覆盖能力、非标…

2026年电竞房家具定制厂商权威推荐榜:优选专业电竞/全屋定制/整体家居及多风格家具定制厂家 - 品牌推荐官

电竞比赛的聚光灯下,选手身下电竞椅的腰部支撑系统正在细微调整,一家为职业赛事提供近2000场支持的品牌背后,是中国定制家具产业精密而庞大的制造网络。广州简诺智能家居有限公司旗下的“简钻”品牌设计团队正在审视…

ssm428人体健康体检预约信息管理系统--论文

目录摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着社会发展和生活水平提高&#xff0c;健康体检成为人们关注自身健康状况的重要途径。传统体检预约方式存在信息管理效率低、资源分配不均、用户体验差等问题。为…

【鸿蒙小程序】| 鸿蒙系统中的元服务创新与实践

【鸿蒙小程序】鸿蒙系统中的元服务&#xff08;Meta Service&#xff09;创新与实践 &#xff08;2025-2026 最新现状与真实开发视角&#xff09; 2025 年底到 2026 年初&#xff0c;华为把“元服务”推到了一个非常关键的位置&#xff0c;它已经成为 HarmonyOS NEXT&#xff…

虾皮开店需要押金吗?要交多少押金

在虾皮&#xff08;Shopee&#xff09;开店&#xff0c;很多卖家关心的问题之一就是“要不要交押金&#xff1f;”。本文将依据虾皮官方最新规则&#xff0c;为你清晰、易懂地解答。 一、官方明确&#xff1a;开店无需押金 根据虾皮官方《卖家服务条款》和入驻政策&#xff…

零基础学AI大模型之Agent智能体

零基础学 AI 大模型之 Agent 智能体 &#xff08;2025年底&#xff5e;2026年初最适合普通人入门的完整路径&#xff09; Agent&#xff08;智能体&#xff09;是目前大模型应用里最火、最有“未来感”的方向&#xff0c;但对零基础同学来说&#xff0c;确实门槛很高。 下面是…

[python]Flask - Tracking ID的设计

本文详细介绍如何在 Flask 应用中实现请求跟踪 ID (tracking_id) 功能,包括中间件设计、日志记录、响应格式化等完整方案,帮助开发者实现请求链路追踪,提升系统可观测性。前言 在实际业务中,根据 tracking_id 追溯…

即插即用系列 | IEEE TMM 2025 SPDFusion:当语义分割成为图像融合的“导师”

论文标题&#xff1a;SPDFusion: A Semantic Prior Knowledge-Driven Method for Infrared and Visible Image Fusion 论文来源&#xff1a;IEEE Transactions on Multimedia (Vol. 27, 2025) 关键词&#xff1a;Image Fusion, Semantic Prior, Deep Learning, Task-Driven, GA…

AI的提示词专栏:小说创作 Prompt,人物设定、情节走向、对话写作

AI 提示词专栏&#xff1a;小说创作 Prompt 完整攻略 &#xff08;人物设定 情节走向 对话写作 2025-2026 最实用模板&#xff09; 以下内容专为想要用大模型&#xff08;Claude / GPT-4o / 通义千问 / DeepSeek / Gemini 等&#xff09;进行高质量小说创作的人准备&#xf…

JBoltAI AI应用中台:重塑企业智能化的统一基座与范式

在企业智能化转型进程中&#xff0c;“系统碎片化、数据孤岛、开发门槛高、能力难复用”等痛点&#xff0c;导致多数企业陷入“AI技术看得见、落地用不上”的困境。JBoltAI基于Java生态构建的AI应用中台&#xff0c;并非简单的工具集合&#xff0c;而是通过“统一基座标准化范式…

全网最全9个AI论文平台,助你轻松搞定本科生论文!

全网最全9个AI论文平台&#xff0c;助你轻松搞定本科生论文&#xff01; AI工具如何让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的学生开始借助AI工具来提升论文写作的效率与质量。这些工具不仅能够帮助学生快速生成初稿、优化语言表达&#xff0c;还能有效降低A…

辽源市东丰东辽龙山西安区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在全球化留学趋势深化的2026年,雅思成绩已成为辽源市东丰、东辽、龙山、西安区学子申请海外院校的核心竞争力,然而本地雅思培训市场却存在诸多痛点。对于广大考生而言,雅思培训选课过程中常常陷入两难:线下教育机构…

AI的提示词专栏:多模态 LLM(Vision-LLM)Prompt 语法

AI 提示词专栏&#xff1a;多模态 LLM&#xff08;Vision-LLM&#xff09;Prompt 语法 &#xff08;2025–2026 年最实用、最有效的写法指南&#xff09; 目前主流的多模态大模型&#xff08;支持图文/视频/文档等&#xff09;包括&#xff1a; GPT-4o / GPT-4o mini / o1系列…

导师严选2026一键生成论文工具TOP8:本科生毕业论文写作全攻略

导师严选2026一键生成论文工具TOP8&#xff1a;本科生毕业论文写作全攻略 2026年学术写作工具测评&#xff1a;为何需要一份精准榜单 随着人工智能技术的不断进步&#xff0c;学术写作工具逐渐成为本科生撰写毕业论文的重要辅助。然而&#xff0c;面对市场上种类繁多的AI写作平…

springboot+vue智慧养老手表管理系统 本系统共分为两个角色:家长,养老院管理员 功...

springbootvue智慧养老手表管理系统 本系统共分为两个角色:家长&#xff0c;养老院管理员 功能有:个人管理&#xff0c;公告管理&#xff0c;家庭管理&#xff0c;加好友管理&#xff0c;老人健康管理&#xff0c;基础管理&#xff0c;加好友板等框架:springboot、mybatis、vue…

挂机放置类游戏开发学习 Part.3 UI布局

UI 布局阶段核心目标回顾(落地挂机游戏)搭建双窗口:「挂机游戏主面板」(核心功能,保留原有数值 / 按钮 / 进度条)+「游戏设置面板」(新增,调整挂机参数、UI 样式);掌握分组布局:用分组、折叠面板分隔不同功…