news 2026/4/23 1:28:57

使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程

使用 Puppeteer 设置 Cookies 并自动化分页操作

在现代的 Web 自动化中,使用 Puppeteer 进行浏览器自动化是一个非常方便的选择。本篇文章将介绍如何使用 Puppeteer 设置 Cookies、模拟用户行为、获取网页内容,并且遍历分页获取所有数据。

一、项目初始化

首先,我们需要安装 Puppeteer。你可以通过 npm 来安装:

npminstallpuppeteer

然后创建一个 JavaScript 文件,例如puppeteer.js,以若依测试。并添加以下代码:

二、代码实现

constpuppeteer=require('puppeteer');constfs=require('fs');// 导入文件系统模块// 设置延时的工具函数functionwaitForTimeout(time){returnnewPromise((resolve,reject)=>setTimeout(resolve,time));}(async()=>{// 启动 Puppeteer 浏览器实例constbrowser=awaitpuppeteer.launch({headless:false// 设置为 false 以便查看操作});try{constpage=awaitbrowser.newPage();awaitpage.setViewport({width:1920,height:800});// 导航到需要设置 cookie 的页面awaitpage.goto('http://localhost:8093/admin');// 定义多个 cookie 对象并存储在数组中constcookies=[{"name":"Admin-Token","value":"eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjYzYWNmZTVmLWUyNGItNDYwNi05ZjdhLTBkYmU5ZDBhZWJmZCJ9.RqZDMMiRTGUwVSLal9dx2mDyHwkY_vk4Vs2bMSegph7P0eTnKDknN5DOP3wRu18e2NVk5OdVSfJcLmC0N1HHHQ"}// 可以继续添加更多 cookie 对象];// 使用 page.setCookie 方法设置多个 cookieawaitpage.setCookie(...cookies);// 打印当前页面的 cookiesconstcookies1=awaitpage.cookies();console.log('当前页面的 cookies:',cookies1);// 导航到目标页面awaitpage.goto('http://localhost:8093/category');// 使用 XPath 选择带有特定文本的按钮constxpathSelectorC='//span[text()="50条/页"]';awaitpage.waitForXPath(xpathSelectorC);// 获取符合条件的元素并模拟点击操作const[element]=awaitpage.$x(xpathSelectorC);if(element){awaitelement.evaluate(element=>element.click());console.log('已选择 "50条/页"');}else{console.log('未找到 "50条/页"');}// 等待分页元素加载完成awaitpage.waitForSelector('ul.el-pager');// 获取分页的所有 <li> 元素constliElements=awaitpage.$$('ul.el-pager li');constlastLiElement=liElements[liElements.length-1];letlastLiText=0;if(lastLiElement){lastLiText=awaitpage.evaluate(li=>li.textContent,lastLiElement);console.log('最后一个 <li> 元素的内容:',lastLiText);}else{console.log('未找到 <li> 元素');}// 定义表格和分页按钮选择器consttableSelector='table';constnextButtonSelector='button.btn-next';// 等待下一页按钮可见awaitpage.waitForSelector(nextButtonSelector,{visible:true,timeout:5000});consttotalPages=parseInt(lastLiText);// 获取总页数letcurrentPage=1;letallTableHTML='';// 用于保存所有表格的 HTML 内容// 遍历所有分页while(currentPage<=totalPages){constbuttonElement=awaitpage.$(nextButtonSelector);consttableElements=awaitpage.$$(tableSelector);if(buttonElement){// 点击“下一页”按钮awaitbuttonElement.click();awaitwaitForTimeout(3000);// 等待加载// 获取当前页面的表格内容并保存for(consttableElementoftableElements){consttableHTML=awaittableElement.evaluate(element=>element.outerHTML);allTableHTML+=tableHTML;}currentPage++;// 增加当前页数}else{console.log('未找到按钮');break;// 如果按钮不存在,退出循环}}console.log('已浏览到第 '+totalPages+' 页');// 你可以将 allTableHTML 保存为文件或进一步处理fs.writeFileSync('allTables.html',allTableHTML);// 完成后关闭浏览器awaitbrowser.close();}catch(e){console.log("发生错误:"+e);}})();

三、代码说明

  1. 启动浏览器实例
    使用puppeteer.launch()启动一个浏览器实例。headless: false表示我们希望看到浏览器的操作界面,便于调试。

  2. 设置 Cookies
    使用page.setCookie(...cookies)设置多个 Cookie。我们通过传递一个包含多个 cookie 对象的数组来设置 Cookies。

  3. 等待和选择元素
    使用page.waitForXPath()page.waitForSelector()来确保元素加载完成后进行交互。特别是通过 XPath 选择“50条/页”按钮,并模拟点击它。

  4. 分页操作
    使用page.$(nextButtonSelector)page.$$(tableSelector)获取“下一页”按钮和表格元素,进行分页处理。每一页的数据都通过tableElement.evaluate()获取 HTML 内容,并累积到allTableHTML中。

  5. 文件保存
    最后,所有页面表格的 HTML 内容保存在一个文件allTables.html中,使用 Node.js 的fs模块来实现文件保存。

四、总结

通过以上代码,你可以模拟在 Web 页面上设置 Cookies、模拟用户行为并自动化分页操作。你可以根据具体需求对该代码进行修改,以实现更复杂的自动化任务。

Puppeteer 是一个强大的浏览器自动化工具,适用于多种 Web 数据抓取和自动化任务。希望本文的示例代码能帮助你入门 Puppeteer,并加速你在自动化测试和 Web 数据抓取方面的工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 11:04:14

救命!张雪峰一句话点醒我:计算机专业优先选网络安全,国家未来大方向错不了!

言 “计算机专业 一定要优先报网络安全,它是未来国家发展的大方向” 为什么推荐学网络安全&#xff1f; “没有网络安全就没有国家安全。”当前&#xff0c;网络安全已被提升到国家战略的高度&#xff0c;成为影响国家安全、社会稳定至关重要的因素之一。 01 高需求和就业前景…

作者头像 李华
网站建设 2026/4/18 6:46:13

AnimeGANv2技术揭秘:为什么能保持人脸不扭曲

AnimeGANv2技术揭秘&#xff1a;为什么能保持人脸不扭曲 1. 引言&#xff1a;AI二次元转换的技术演进 随着深度学习在图像生成领域的快速发展&#xff0c;风格迁移&#xff08;Style Transfer&#xff09;技术已从早期的简单滤波效果&#xff0c;进化到如今能够实现高度艺术化…

作者头像 李华
网站建设 2026/4/20 19:02:42

VibeVoice-TTS模型剪枝优化:轻量化部署提速50%案例

VibeVoice-TTS模型剪枝优化&#xff1a;轻量化部署提速50%案例 1. 引言&#xff1a;TTS大模型的部署挑战与轻量化需求 随着语音合成技术的发展&#xff0c;以微软推出的 VibeVoice-TTS 为代表的多说话人、长文本对话式文本转语音&#xff08;TTS&#xff09;系统&#xff0c;…

作者头像 李华
网站建设 2026/4/17 11:37:18

毕业季必备:用MediaPipe Holistic轻松搞定AI毕业设计

毕业季必备&#xff1a;用MediaPipe Holistic轻松搞定AI毕业设计 引言 又到一年毕业季&#xff0c;计算机专业的同学们是不是正在为毕业设计发愁&#xff1f;想做个炫酷的体感控制项目&#xff0c;但实验室GPU排队要两周&#xff0c;自己的笔记本跑不动深度学习模型&#xff…

作者头像 李华
网站建设 2026/4/21 4:02:56

从漏洞原理到长效防护:MongoDB CVE-2025-14847 深度攻防研究

一、漏洞基础信息 1.1 核心漏洞信息 漏洞编号&#xff1a;CVE-2025-14847漏洞评级&#xff1a;高危&#xff08;High&#xff09;CVSS 评分&#xff1a;7.5&#xff08;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H&#xff09;漏洞类型&#xff1a;未授权访问内存泄漏&#…

作者头像 李华
网站建设 2026/4/22 22:35:43

AI模型尝鲜族必备:最新开源模型云端体验清单

AI模型尝鲜族必备&#xff1a;最新开源模型云端体验清单 1. 为什么你需要云端AI模型体验平台&#xff1f; 作为一名科技爱好者&#xff0c;你可能经常遇到这样的困扰&#xff1a;每次看到新发布的AI模型都跃跃欲试&#xff0c;但本地部署时总会遇到各种环境冲突、依赖问题&am…

作者头像 李华