【从入门到放不下系列】记一次用 puppeteer 爬数据的历程(上)

【从入门到放不下系列】记一次用 puppeteer 爬数据的历程(下)—— 爬取搜狗微信搜索的公众号文章 上回书说到,使用 puppeteer 库做了截图操作简单展示了 puppeteer 的特性和基本使用方法。这回我们来说说用 puppeteer 做爬取页面数据并写入 Excel 的操作。 puppeteer 实战:爬取搜狗微信搜索的公众号文章并写入 Excel 首先背景:搜狗搜索现在有个功能可以根据关键字来查询微信公众号文章,而我们要做的就是把指定关键字的文章给它爬下来,由于这个需求是从我司业务部... 阅读详情

最近因工作需要,学习了 Node 爬虫,简单记录一下我的心路历程。

首先来说说 puppeteer 这个库,顺手查了一下 puppeteer 这个单词,它貌似有【操纵木偶的人;操纵傀儡】这方面的含义,这就很好理解啦。这个库本质上来讲是用来做自动化测试的,它提供了一些 API 来直接控制 Chrome 的操作,利用它的这些特性,我们可以用来做 UI Test 或者当做爬虫来爬取页面数据。

说好了是从入门开始,那好,我们正式开始入门:

首先,puppeteer 是一个 NPM 包,安装很方便。

创建项目目录后执行命令:

$ yarn add puppeteer
或者
$ npm install puppeteer

安装时会自动下载一个最新版本的 Chromium,后续的所有操作都是直接在 Chromium 中进行的。

在项目目录下新建 index.js 文件

初试 puppeteer:先亮一亮 puppeteer 的功能和基本用法

我们先来试试用 puppeteer 截个图

在 index.js 中,添加如下代码


const puppeteer = require("puppeteer");



(async () => {

const browser = await puppeteer.launch();

const page = await browser.newPage();

await page.goto("http://www.baidu.com");

await page.screenshot({ path: "baidu.png" });

await browser.close();

})();

随后再执行

node index.js

执行成功后,puppeteer 在项目根目录下写入了截图,完美~

大致解读一下这段代码。很明显的一个特征就是 async/await 出现频率很高。这是 ES7 的特性,puppeteer 很好的支持了 async/await ,因此官方推荐 7.6 以上版本的 Node。其实代码很简单,语义化很强,很好理解:


// 引入 puppeteer 库

const puppeteer = require("puppeteer");



// 使用IIFE,直接执行函数

(async () => {

// 创建 browser 实例

const browser = await puppeteer.launch();

// 新建一个页面

const page = await browser.newPage();

// 打开百度 URL

await page.goto("http://www.baidu.com");

// 截图,并设置图片的存放位置

await page.screenshot({ path: "baidu.png" });

// 关闭浏览器

await browser.close();

})();

以上,使用 puppeteer 实现了一个简单的小案例。

总的来说,使用起来并不复杂,官方文档还算不错,还有中文版的,这点好评!学习过程中主要还是参考文档吧。

官方在线 API 文档地址:https://zhaoqize.github.io/puppeteer-api-zh_CN/

四大Web UI自动化测试框架对比:Selenium、Cypress、Playwright与Puppeteer选型指南 Web UI自动化测试是保障软件质量、实现高效持续交付的关键环节。其核心原理是通过脚本模拟用户操作,对Web应用界面进行功能与交互验证。这项技术的价值在于能够快速回归测试,提升发布信心,并融入DevOps流程。在实际应用中,针对不同技术栈和业务场景,选择合适的框架至关重要。例如,对于需要处理复杂异步操作和网络请求拦截的现代单页应用(SPA),Cypress和Playwright等框架提供了更优的解决方案。本文聚焦于当前主流的四大框架——Selenium、Cypress、Playwright和Puppetee 阅读详情

相关推荐

指纹浏览器:隐匿 Puppeteer/Playwright 的自动化特征(`navigator.webdriver` 等)

Puppeteer 和 Playwright 的自动化特征,绝不是几个简单的 JS 属性修改就能掩盖的。这是一场从应用层 JS Hook 到 V8 引擎底层,再到 Chromium C++ 源码级的立体防御战。 本文将拆解:如何从物理层面彻底斩断 Puppeteer/Playwright 的自动化基因,从源码级重构 `navigator.webdriver`,抹除 CDP 执行侧信道,并构建防篡改的深层拟态伪装架构。

数据知道的博客 889

Puppeteer 使用教程-实战篇(爬取图片、视频、音频,页面数据)

续上篇,我们简单讲述一下puppeteer常见的应用场景,包括静态页面数据获取,网络请求获取截取、图片、视频资源下载、自动化测试等,看了绝对有收获。

~朴:shu的博客 5246

puppeteer爬取大众点评的demo

puppeteer学习的demo,使用puppeteer爬取大众点评的信息,反反爬虫大众点评svg加密,将获取信息存到本地json或写入数据库,有问题私聊,或者去我博客留言,谢谢

Puppeteer 使用教程-基础篇(超详细、超全面)

Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。本文涉及了Puppeteer常见常用的API样例,包括爬取图片、视频、cookies设置,字符输入等多方面知识,很全面哦。

~朴:shu的博客 3万+

Xshell 连接 kali 虚拟机教程

启动ssh服务,启动后重新查看ssh服务状态,如下图active(running)正常。至此便可以直接使用Xshell登录kali系统了。至此虚拟机已经可以上网。-查看ssh服务状态。

qq_40726937的博客 2219

天池长期赛:二手车价格预测(422方案分享)

本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。

weixin_46685991的博客 1万+

Puppeteer基础入门--Puppeteer初探

元素操作基础 - 学习如何定位和提取页面数据 🎯。📁 示例代码已上传至GitHub仓库的。检查防火墙是否阻止Chrome进程。

Penk的博客 745

CTransformers: 高效的Python语言模型绑定库

CTransformers是一个为C/C++实现的Transformer模型提供Python绑定的开源库。它基于GGML库构建,旨在为开发者提供一种高效且易用的方式来在Python中使用各种流行的语言模型。支持多种流行的语言模型,如GPT-2、LLaMA、Falcon等提供统一的简单API接口支持GPU加速(CUDA和Metal)与Hugging Face Transformers和LangChain集成支持流式输出和嵌入计算。

helloaiworld的博客 1268

puppeteer学习笔记

puppeteer是一个可以控制chrome的库,可以模拟一些交互行为。

ArmadaDK的博客 635

Qt入门教程100篇(已完结)

Qt5入门教程,Qt6入门教程。包含了: Qt环境搭建篇、Qt数据类型篇、Qt中STL篇、Qt核心篇、Qt核心对象QObject篇、Qt基础控件篇、Qt对话框篇、Qt高级控件篇、Qt数据模型篇、QSS篇、Qt文件篇 、Qt硬件编程、Qt的一些demo、Qt项目开发篇。......

小鱼酱的博客 15万+

S7-1500——(一)西门子PLC编程算法及程序设计1、拆解基本算法(一)

顺序队列也是一种操作受限的线性表,在一端添加数据,另一端取出数据,符合先进先出的特性工作过程:需要两个指针来指向存取元素的位置(头指针,尾指针)如下图头指针指向队列里边第一个元素位置(即下次出队元素所在的位置)尾指针是指向队列内最后一个元素的下一个位置(即下次要入队的元素要存放的位置)空队状态:最初始状态,队列没有任何元素,头指针和尾指针都指向队头,(由于没有任何元素,不能做出队操作,可进行入队操作)入队操作出队操作满队:一直入队,最终元素装满队列;满队后,虽然队列前面还有空间,但由于。

大小曲奇的博客 1605

前端工程师的一大神器——puppeteer

关注公众号“执鸢者”,回复“资料”获取500G资料(各“兵种”均有),还有专业交流群等你一起来潇洒。(哈哈)本文主要讲述一下Google出版并一直在不断维护的神器puppeteer,通过...

wang_yu_shun的博客 2057

【JDK】win 10 / win 11:jdk 8 下载、安装、配置、验证

win10 / win 11:JDK 最新版本下载 / 历史版本下载(jdk 8)、安装、配置系统环境变量、验证安装全详细操作教程

顾三殇 —— 博客空间(软件测试) 13万+

漫谈网页自动化与数据采集的发展历程

本文梳理了网页自动化与数据采集技术的四个发展阶段:早期探索阶段(2000年前)主要处理静态网页;工具爆发期(2000-2010年)出现Selenium等动态交互工具;智能化对抗期(2010-2020年)无头浏览器与反爬技术激烈博弈;AI驱动转型期(2020年后)强调合规化与智能系统。发展过程中,技术从简单的HTTP请求演变为AI驱动的复杂系统,反爬机制也从简单IP封锁升级为AI风控,同时法律规范日益完善。未来趋势将聚焦多模态数据采集、联邦学习等技术,在效率与合规间寻求平衡。

YouJT2002的博客 2386

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1393

软考中级-软件设计师 Python基础

软考中级-软件设计师 Python知识点整理

片言可决讼,半纸能缚龙 3642

Puppeteer无头模式:Headless Chrome实战

无头模式(Headless Mode)是一种在没有图形用户界面(GUI)的环境下运行浏览器的方式。对于自动化测试、网页抓取和服务器端渲染等场景,无头模式能够显著提升性能并降低资源消耗。Puppeteer自v22版本起默认使用[新无头模式](https://developer.chrome.com/docs/chromium/new-headless/),提供了更接近真实浏览器的行为和更完整的功能支...

gitblog_00934的博客 902

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

正式就绪 | Firefox、Chrome 和 Puppeteer 已支持 WebDriver BiDi

作者 /Matthias Rohmer近期,我们与 BrowserStack 一起见证了 WebDriver BiDi 在 BrowserStack 中正式投入使用。并且 WebDriver BiDi 也继续得到了完善,Firefox 129 及 Puppeteer 23 均已获得对 WebDriver BiDi 的生产就绪 (production-ready) 支持!???? 在 BrowserSt...

Android开发者 355

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【爬虫高手私藏干货】:揭秘企业级反爬绕过技巧,仅限内部流传的3种黑科技

掌握Python爬虫反爬技巧,轻松突破企业级防护机制。适用于高频数据采集、竞品监控等场景,详解IP轮换、行为模拟与JS逆向3大黑科技,提升抓取成功率。实战导向,高效稳定,值得收藏。

PoliVein的博客 1826

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践

随着 Puppeteer 的不断更新,它在浏览器自动化领域的应用越来越广泛。了解并选择合适的 Puppeteer 版本,以确保你的自动化测试能够顺利运行在支持的浏览器上,对于提高测试效率和准确性至关重要。通过上述版本映射表,你可以轻松地为你的自动化测试选择合适的 Puppeteer 和浏览器版本。

2039

突破Puppeteer性能瓶颈:7个关键优化技术让爬虫效率提升300%

你是否遇到过Puppeteer脚本执行缓慢、资源占用过高的问题?当处理大规模网页抓取或自动化测试时,性能瓶颈往往成为项目交付的最大障碍。本文将系统讲解从浏览器启动到页面操作的全流程优化方案,通过实测数据验证,这些技术可使平均执行时间缩短65%,内存占用降低40%。读完本文你将掌握: - 两种Headless模式的性能对比及选型策略 - 网络请求拦截的最佳实践与资源过滤技巧 - 并行任务处理的安全...

gitblog_01165的博客 402

性能提升300%:Puppeteer新旧无头模式深度对比与选型指南

你是否遇到过Puppeteer自动化脚本执行缓慢、资源占用过高的问题?2023年Chrome 112版本推出的新无头模式(Headless Mode)带来了革命性的性能突破。本文将通过实测数据对比新旧两种无头模式的核心差异,提供基于业务场景的技术选型方案,并详解迁移过程中的避坑指南。 ## 一、无头模式(Headless Mode)演进历程 Puppeteer自诞生以来默认使用无头模式运行浏览...

gitblog_00030的博客 704

从网页截图到PDF生成:Puppeteer实战与npm封装

网页内容转PDF是文档管理系统中常见的技术需求,涉及网页渲染、打印样式控制等核心技术。Puppeteer作为基于Chromium的无头浏览器,能够完美支持现代网页布局和打印媒体查询,成为实现这一需求的理想选择。通过合理处理CSS打印样式、优化性能以及封装为npm包,开发者可以构建高效可靠的PDF生成工具。本文以pdf-snapshot工具为例,详细介绍了从需求分析到npm包发布的完整流程,包括Puppeteer的核心应用、CSS打印样式处理技巧、性能优化手段以及npm包封装的最佳实践,为开发者提供了一套完整

weixin_28836507的博客 253

浏览器自动化技术六大路线详解与实战选型指南

浏览器自动化技术通过程序控制浏览器行为,实现Web操作模拟与任务自动化。其核心原理可分为DOM操作、原生事件模拟、无头浏览器控制等六大技术路线,分别适用于不同场景。在Web自动化测试和爬虫开发中,合理选择技术方案直接影响项目成败。例如Puppeteer等无头浏览器技术能完整模拟用户行为,而Selenium WebDriver则提供出色的跨浏览器支持。现代反爬机制和SPA应用的兴起,使得浏览器指纹模拟和页面状态检测成为关键技术挑战。工程师需要根据性能需求、隐蔽性要求和功能完备性进行技术选型,Playwrigh

weixin_33603377的博客 187

2026年十大爬虫工具评测与选型指南

网络爬虫作为数据采集的核心技术,通过自动化程序模拟人类浏览行为获取网页数据。其工作原理主要基于HTTP请求响应机制,结合DOM解析和数据抽取技术。在数字化转型背景下,爬虫技术能显著提升数据获取效率,广泛应用于价格监控、舆情分析和搜索引擎等领域。随着反爬机制的升级,现代爬虫工具已集成智能代理调度、动态渲染等关键技术。本文基于QPS、解析准确率等16项指标,对比分析Scrapy 3.0、Puppeteer 7.0等工具的并发处理能力和反爬绕过能力,为不同规模企业提供选型建议,特别适合需要处理电商数据抓取和异步加

weixin_28836507的博客 907
上一篇: p 标签里面不能嵌套 div 标签
下一篇: 【从入门到放不下系列】记一次用 puppeteer 爬数据的历程(下)—— 爬取搜狗微信搜索的公众号文章
天府第5街①号切图仔
博客等级 码龄9年 32粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值