【0基础学爬虫】爬虫基础之自动化工具 Pyppeteer 的使用

Python 网络爬虫高阶用法 通过学习本文的内容,读者应掌握 Python 网络爬虫的高级用法,并能够应对反爬虫机制、抓取动态网页、实现分布式和异步爬虫。网络爬虫技术在数据抓取、信息采集等方面有着广泛的应用,掌握这些技能将大大提升数据处理和分析的效率。 阅读详情

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为自动化工具 Pyppeteer 的使用。

概述

前两期文章中已经介绍到了 Selenium 与 Playwright 的使用方法,它们的功能都非常强大。而本期要讲的 Pyppeteer 与 Playwright 一致,都可以作为 Selenium 的替代者来使用。且与 Playwright 相比,Pyppeteer 的使用更加简单。

Pyppeteer 的使用

介绍

在上上期文章中,我们介绍了 Selenium 隐藏特征的方法,其中使用到了 stealth.min.js 文件。在介绍文件的来源时我们提到了 Puppeteer,Puppeteer是一个基于 Node.js 的自动化工具。而这期要将的 Pyppeteer 就是 Puppeteer 的 Python 版。

Pyppeteer 是一个使用 Python 语言封装的 Google Chrome 浏览器的非官方 API。它可以用来进行自动化测试、网站爬虫和数据抓取等工作。

Pyppeteer 的底层是通过调用 Chrome 浏览器的 DevTools Protocol 接口来实现的。DevTools Protocol 是一个基于 WebSocket 协议的远程调试接口,可以让开发者控制和检查 Chrome 浏览器的行为。Pyppeteer 利用这个接口实现了对 Chrome 浏览器的完全控制,包括加载页面、模拟用户操作、获取页面内容等等。

Pyppeteer 支持 Python 3.6 及以上版本,并且可以在 Windows、macOS 和 Linux 等操作系统上运行。它提供了简单易用的 API,可以方便地模拟用户在浏览器上的操作,例如点击链接、填写表单、触发事件等等。同时,它也支持对浏览器的调试、截屏、PDF 导出等高级功能。

Pyppeteer 的使用方式与其他 Python 库类似,可以通过 pip 包管理器进行安装。除了 Pyppeteer 本身外,还需要安装 asyncio 库和一个兼容的 Chrome 浏览器版本。在安装完成后,可以通过 Python 代码来控制浏览器的行为,实现各种自动化测试或数据抓取的任务。

安装

Pyppeteer 的安装与 Playwright 相似。

Pyppeteer 采用了async机制,所以必须使用Python 3.5及以上版本。

首先使用 pip 安装 Pyppeteer 包:

pip install pyppeteer

安装完成后可以选择执行 pyppeteer-install 下载用于 pyppeteer 的 chromium,这一步可以省略,因为第一次运行 Pyppeteer 时会自动检测是否安装了 chromium 浏览器,如果没有安装程序会自动进行安装配置。

使用

前两期文章中介绍到了 Selenium 与 Playwright 库的使用方法,因为自动化库的使用大同小异,所以这里只介绍 Pyppeteer 中比较特殊的方法

Pyppeteer 基于异步实现,所以它支持异步操作。

启动

以百度热搜榜为例:

import asyncio
from pyppeteer import launch


async def main():
    browser = await launch(headless=False)
    page = await browser.newPage()
    await page.goto('https://top.baidu.com/board?tab=realtime')
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

示例代码中使用 launch 方法创建了一个浏览器对象 browser ,设置了 headless=False 来关闭无头模式,这一行代码的作用相当于启动一个浏览器,await的作用就是等待浏览器启动完毕。

创建完浏览器后,使用到了 newPage 方法,创建了一个 Page 对象,这一步相当于打开了一个新的标签页,通过 await 等待标签页创建完毕,然后调用 goto 方法打开目标网址,最后使用 close 方法关闭浏览器。

launch详解

launch 方法用于启动浏览器进程并返回浏览器实例,它包含了多个参数:

参数描述
ignoreHTTPSErrors(bool)是否忽略HTTPS错误。默认为 False
headless(bool)是否开启无头模式。默认为True
executablePath (str)可执行文件的路径,设置该参数可以指定已有的 Chrome 或 Chromium 浏览器。
slowMo (intfloat)
args (List [str])传递给浏览器的额外参数。
dumpio(bool)是否将 Pyppeteer 的输出信息传给 process.stdout和process.stderr。默认为False。
userDataDir (str)用户数据文件夹。
env(dict)浏览器环境。默认与 Python 进程相同。
devtools(bool)是否为每个标签页打开 DevTools 面板,默认为False,如果该参数为 True,则 headless 会被强制设置为 False。
logLevel(intstr)
autoClose(bool)脚本完成时自动关闭浏览器进程。默认为True。
loop(asyncio.AbstractEventLoop)事件循环。

禁用提示条

与 Selenium 一样,Pyppeteer 控制浏览器时会提示 Chrome 正受到自动测试软件的控制。可以通过 设置 launch 方法中的 args 参数来关闭提示。

browser = await launch(headless=False, args=['--disable-infobars'])

用户数据持久化

自动化工具如 Selenium 、Playwright 都有一个特征,就是每一次运行的时候创建的都是一个全新的浏览器,它不会记录用户之前的行为。如第一次运行时我登录了某个网站,而第二次运行时再次进入该网站时依旧需要登录。这是因为自动化工具没有记录用户行为信息。Pyppeteer 中,如果需要记录用户的行为信息,可以通过设置 launch 方法中的 userDataDir 方法来实现。

browser = await launch(headless=False, args=['--disable-infobars'], userDataDir='./userdata')

设置了用户数据文件夹后运行代码,会生成一个 userdata 文件夹,其中就存储着用户上次控制浏览器时记录的一些行为数据。

1

执行 JS 语句
import asyncio
from pyppeteer import launch


async def main():
    browser = await launch(headless=False)
    page = await browser.newPage()
    await page.goto('https://top.baidu.com/board?tab=realtime')
    dimensions = await page.evaluate('''() => {
           return {
               width: document.documentElement.clientWidth,
               height: document.documentElement.clientHeight,
               deviceScaleFactor: window.devicePixelRatio,
           }
       }''')
    print(dimensions)
    await browser.close()
# {'width': 783, 'height': 583, 'deviceScaleFactor': 1}

通过调用 Page 对象下的 evaluate 方法可以执行一段 JS 语句。

反检测

Pyppeteer 的反检测方式与 Selenium 和 Playwright 有些区别,但是思想是一样的。

首先需要安装 pyppeteer_stealth 库,它的作用就是用来隐藏特征。

pip install pyppeteer_stealth

以无头模式为例:

import asyncio
from pyppeteer import launch
from pyppeteer_stealth import stealth


async def main():
    browser = await launch()
    page = await browser.newPage()
    # 隐藏特征
    await stealth(page)
    
    await page.goto('https://bot.sannysoft.com/')
    await page.screenshot(path='page.png')
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

隐藏特征前:

2

隐藏特征后:

3

等待

waitForSelector :等待符合条件的节点加载完成

waitForFunction :等待某个 JavaScript 方法执行完毕或返回结果

waitForRequest :等待某个特定的请求发出

waitForResponse :等待某个特定请求对应的响应

waitForNavigation :等待页面跳转,如果页面加载失败则抛出异常

waitFor :通用等待

waitForXpath :等待符合 Xpath 的节点加载出来

选择器

Pyppeteer 提供了一些比较有意思的选择器方法。

J() :返回匹配到的第一个节点,等同于 querySelector 方法。

JJ() :返回匹配到的所有节点,等同于 querySelectorAll 方法。

JJeval() :执行 JS 脚本并返回一个 JSON 对象,等同于 querySelectorAllEval 方法。

Jeval() :执行 JS 脚本并返回执行结果,等同于 querySelectorEval 方法。

Jx() :通过 Xpath 匹配符合条件的内容,等同于 xpath 方法。

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch(headless=False)
    page = await browser.newPage()
    await page.goto('https://top.baidu.com/board?tab=realtime')
    # 等待元素加载
    await page.waitForXPath('//div[@class="c-single-text-ellipsis"]')
    element_j = await page.J('.c-single-text-ellipsis')
    element_jj = await page.JJ('.c-single-text-ellipsis')
    # 打印元素的文本信息
    print(await (await element_j.getProperty('textContent')).jsonValue())
    for element in element_jj:
        # 打印元素的文本信息
        print(await (await element.getProperty('textContent')).jsonValue())

    await browser.close()

asyncio.get_event_loop().run_until_complete(main())
"""
运行结果:
青年强则国家强 
青年强则国家强 
乌代表举自家国旗挑衅暴揍俄代表 
英王加冕礼彩排:黄金钻石马车亮眼 
平凡岗位上的奋斗故事 
俞敏洪建议24节气都放假 
7人吃自助4小时炫300多个螃蟹 
  .
  .
  .
"""

总结

Pyppeteer 类似于轻量级的 Playwright ,它使用起来更加简单,且 Pyppeteer 与 Playwright 一样都支持异步,性能方面也比较强。缺点就是它基于 Chromium 内核,资源消耗比较大,不支持其它浏览器,而且 Pyppeteer 的作者近年来都没对该库进行维护,导致存在一些 bug。

好了,今天的分享就到这里!如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,里面的内容都是适合零基础小白的笔记和资料,超多实战案例,不懂编程也能听懂、看懂。

如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

优快云大礼包:全网最全《全套Python学习资料》免费分享🎁

如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

😝朋友们如果有需要的话,可以V扫描下方二维码免费领取🆓

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python学习路线

image-20230619144606466

python学习路线图1

二、Python基础学习
1. 开发工具

2. 学习笔记

在这里插入图片描述

3. 学习视频

在这里插入图片描述

三、Python小白必备手册

图片

四、数据分析全套资源

在这里插入图片描述

五、Python面试集锦
1. 面试资料

在这里插入图片描述

在这里插入图片描述

2. 简历模板

在这里插入图片描述

因篇幅有限,仅展示部分资料,添加上方即可获取

Puppeteer 爬虫框架使用 Puppeteer pyppeteer官方文档 Puppeteer教程 Puppeteer 是 Google 基于 Node.js 开发的工具,调用 Chrome 的 API,通过 JavaScript 代码来操纵 Chrome 完成一些操作,用于网络爬虫、Web 程序自动测试等,其 API 极其完善,功能非常强大。 pyppeteer 介绍 Pyppeteer 是一款非常高效的 web 自动化测试工具,是 Puppeteer 的 Python 版本。 pyppeteer 使用了 Python 异步协程库 阅读详情

相关推荐

python使用pyppeteer详细教程

文章目录介绍环境部署pip installchromium下载快速使用应用技巧启动参数优化常用的参数其他参数示例窗口/可视区最大化隐藏浏览器特征拦截请求 介绍 注意,讲解的模块叫做 Pyppeteer,不是 Puppeteer。 Puppeteer 是 Google 基于 Node.js 开发的一个工具,有了它我们可以通过 JavaScript 来控制 Chrome 浏览器的一些操作,当然也可以用...

Pylemon Blog 2万+

python 自动化学习(四) pyppeteer 浏览器操作自动化

1、selenium //跨浏览器,官方维护的比较好,资料也多,各个版本比较稳定,源码读起来舒服//缺点是配置时需要留心程序语言的版本和驱动版本以及浏览器版本,还有就是本身不支持步//需要重写源码或者利用grid分布式来实现异步2、pyppeteer //是基于chrome官方为chromium定制的自动化测试框架puppeteer而//实现的一个python包装的非官方版本框架,最后一次更新是在2018年//优点就是速度比selenium快,支持异步,常被拿来做爬虫,

默子昂 8188

从零开始学python(十三)爬虫工程师自动化和抓包

1.跟我一起从零开始学python(一)编程语法必修2.跟我一起从零开始学python(二)网络编程3.跟我一起从零开始学python(三)多线程/多进程/协程4.跟我一起从零开始学python(四)数据库编程:MySQL数据库5.跟我一起从零开始学python(五)数据库编程:Redis数据库6.跟我一起从零开始学python(六)数据库编程:MongoDB数据库7.跟我一起从零开始学python(七)机器学习8.跟我一起从零开始学python(八)全栈开发。

ch950401的博客 3053

Python 爬虫——Pyppeteer

Pyppeteer相比于Selenium最大的优势是可以实现无头浏览器,它可以在不开启浏览器页面的情况下模拟浏览器进行请求的发送和接收,并且支持原生的Javascript,可以实现更多样化的页面操作。模拟用户的方式可以很好的解决直接请求的难题,一般来说获取到的页面数据都是完全渲染之后的结果,可以看到的数据都可以进行内容提取(若页面加载不完全,也可以使用某些方式使得页面完全加载)

Phantom_Blu_Ray的博客 3658

Python 爬虫利器之 Pyppeteer 的用法

如果大家对 Python 爬虫有所了解的话,想必你应该听说过 Selenium 这个库,这实际上是一个自动化测试工具,现在已经被广泛用于网络爬虫中来应对 JavaScript 渲染的页面的抓取。 但 Selenium 用的时候有个麻烦事,就是环境的相关配置,得安装好相关浏览器,比如 Chrome、Firefox 等等,然后还要到官方网站去下载对应的驱动,最重要的还需要安装对应的 Python S...

842

python爬虫神器Pyppeteer入门及使用

主要介绍了python爬虫神器Pyppeteer入门及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Pyppeteer 的基本使用方法

什么是 Puppeteer? 要想知道什么是 Pyppeteer,首先应该先了解一下 Puppeteer: Puppeteer 是 Google 基于 Node.js 开发的一个工具,拥有 Puppeteer 即可通过 JavaScript 来控制 Chrome 浏览器的一些操作,也可以用于网络爬虫上,其 API 极其完善,功能非常强大。 什么是 Pyppeteer? Pyppeteer 是 Puppeteer 的 Python 实现,在 Pyppetter 背后也有一个类似 Chrome 浏览器的 Chr

Giyn 7171

用示波器抓取同步Buck自举电容波形:从充电回路到SW节点振铃的完整分析

本文通过实测TI TPS54561和MPS MPQ4572同步Buck芯片,详细解析了自举电容在充电、维持和放电三个工作阶段的波形特征。重点揭示了电感泄放回路与充电回路重叠时,在SW节点引发的振铃现象及其产生机理,并提供了串联阻尼电阻等有效的工程抑制方法。文章结合示波器实测,为硬件工程师提供了从波形观测到问题调试的完整实践指南。

weixin_29276847的博客 371

Python爬虫之pyppeteer的使用(爬虫、获取cookie、截屏插件、防爬绕过)

下载文本中的网页源码,由于需要向下拉动滚动条所以使用pyppeteer渲染网页,并执行js代码,可是发现开启无界面的时候似乎执行不了js代码,还有异步的时候好像也执行不了js代码 import asyncio from pyppeteer import launch import re, os,time async def create_page(): browser = await launch(headless=True, dumpio=True) return browser

墨痕诉清风的博客 1万+

PPT太丑?用InDesign制作电影级的交互式在线演示文档

本文旨在解决传统演示软件(如PowerPoint、Keynote)在制作商业提案、设计报告时,普遍存在的模板化严重、视觉表现力不足、动态效果廉价的核心痛点。我们将介绍一套常被设计师们“误解”或“忽略”的“降维打击”工作流,核心是利用印刷排版软件 Adobe InDesign 强大的版式控制、动画与交互功能,来创建电影级的动态演示文稿,并通过其 在线发布 (Publish Online) 功能,一键生成可在任何浏览器中流畅访问的网页版交互式文档,从而极大地提升提案的专业度与视觉冲击力。

Kingsdesigner的博客 1276

2025年12月11日 Coherent收发器下沉到数据中心:调研

技术可行性已基本具备。随着3nm DSP技术的成熟和Coherent-Lite等低功耗方案的推出,Coherent技术与IMDD的功耗差距在800G及以上速率节点快速缩小。特别是在1.6T及更高速率,两种技术的功耗开始趋于收敛。同时,通过系统级优化,如将DSP功能从可插拔模块转移到ASIC芯片,可实现30%以上的功耗降低。在成本方面,硅光技术的进步使得单通道硅光引擎BOM成本降至18美元,较2020年下降62%,逼近InP方案的经济临界点。光学系统机会丰富多样。

weixin_51184047的博客 1167

2024最好的Python网络爬虫分步指南

Python提供了非常强大的网络爬虫开发能力,是目前最流行的爬虫语言之一。阅读本文以了解如何使用Python进行网络爬取。

wellshake的博客 1618

Wireshark抓包实战:5个CTF比赛中高频出现的流量分析技巧(附真实案例)

本文分享了Wireshark在CTF比赛和实战渗透中的五个核心流量分析技巧。内容涵盖从宏观统计概览锁定可疑目标、深度解析ICMP与HTTP等协议、追踪重组完整会话流,到利用字符串搜索和命令行工具进行自动化分析。掌握这些高阶技巧能显著提升分析海量网络流量的效率与精准度。

rrr55的博客 260

Linux安装pyppeteer

关键是安装Chromium,调用函数pyppeteer.executablePath()查看默认存放路径

XerCis的博客 4564

高性能C#上位机:多串口并发,百万数据不卡顿

去年做了一个环境监测项目,要对接32个串口传感器,每个传感器每秒发10条数据,一天下来就是2700多万条数据,之前的老程序跑起来UI直接卡死,数据丢包率高达10%,存到数据库要卡半天,客户要求数据丢包率为0,UI响应延迟≤100ms,百万级数据查询≤1s。这套多串口通信方案已经用在了我们公司10多个项目上,最多支持64个串口同时并发,每秒处理3000条数据,完全不卡顿,数据零丢包,客户非常满意,最近做的一个光伏监测项目,对接了48个串口传感器,稳定运行了6个月,没有出过任何问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 423

基于Python的彩票数据爬虫:数据抓取与趋势分析

爬虫是一种用于从互联网上自动抓取信息的程序。在抓取彩票数据时,我们首先需要确定目标网站并获取其网页内容,接着提取彩票的开奖结果信息并保存。彩票数据通常是以HTML表格或列表的形式展示,爬虫可以利用Python的requests和来抓取静态网页,或使用Selenium来抓取动态页面。在本篇博客中,我们深入探讨了如何使用Python编写彩票数据爬虫,抓取并分析彩票开奖结果。通过Python爬虫技术,结合数据分析与可视化工具,我们能够全面分析历史开奖数据,揭示彩票号码的频率分布、趋势变化以及未来的可能走势。

2201_76125261的博客 1937

异步自动化工具pyppeteer的使用方法

pyppeteer的介绍及安装 Puppeteer 是 Google 基于 Node.js 开发的一个工具,有了它我们可以通过 JavaScript 来控制 Chrome 浏览器的一些操作,当然也可以用作网络爬虫上,其 API 极其完善,功能非常强大。Pyppeteer 是 Puppeteer 的 Python 版本的实现,但他不是 Google 开发的,是一位来自于日本的工程师依据 Puppeteer 的一些功能开发出来的非官方版本。 安装:pip install pyppeteer 浏览器驱动自动会.

Aaron_liu1的博客 1741

Pyppeteer

一、简介 Puppeteer 是 Google 基于 Node.js 开发的一个工具,有了它我们可以通过 JavaScript 来控制 Chrome 浏览器的一些操作,当然也可以用作网络爬虫上,其 API 极其完善,功能非常强大。 而 Pyppeteer 又是什么呢?它实际上是 Puppeteer 的 Python 版本的实现,但他不是 Google 开发的,是一位来自于日本的工程师依据 Pupp...

******* ▄︻┻┳═一 ******* 2141

基于嵌入式Linux设计的智能车库(GEC6818)

随着城市化进程的加快,传统停车管理方式存在效率低下、人工成本高、车主体验差等问题。为解决这些问题,本项目基于嵌入式Linux技术,设计并实现了一套智能车库管理系统。该系统采用GEC6818开发板作为核心控制器,运行Qt应用程序,并结合USB免驱摄像头进行车牌识别,RFID模块完成刷卡支付,SQLite数据库存储车主信息和停车记录。系统提供车主注册、用户管理、出入库管理、停车费结算、车辆查询等功能,并具备语音播报提示,提高用户体验。通过本系统,停车场管理更加高效、智能,有助于提升停车服务质量,减少人工干预,适

441

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python 爬虫利器之 Pyppeteer 的用法,selenium被淘汰了?

如果大家对 Python 爬虫有所了解的话,想必你应该听说过 Selenium 这个库,这实际上是一个自动化测试工具,现在已经被广泛用于网络爬虫中来应对 JavaScript 渲染的页面的抓取。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:961562169 但 Seleniu

Python_sn的博客 9824

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Pyppeteer使用笔记

部分内容来自 https://mp.weixin.qq.com/s/Iz-DY1UrSfVFRFh5CyHl3Q https://www.cnblogs.com/zhang-zi-yi/p/10820813.html Pyppeteer介绍 如果大家对 Python 爬虫有所了解的话,想必你应该听说过 Selenium 这个库,这实际上是一个自动化测试工具,现在已经被广泛用于网络爬虫中来应对 ...

爬虫工程师的日常笔记 1251

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python网络爬虫高级技巧:从入门到精通

网络爬虫作为数据采集的重要工具,在数据分析、搜索引擎、内容聚合等领域发挥着重要作用。随着网站反爬技术的不断升级,传统的爬虫方法已经难以满足需求。本文将深入探讨Python网络爬虫的高级技巧,包括反爬策略、异步爬虫、分布式爬取、数据处理等方面,帮助开发者构建高效、稳定的爬虫系统。

lady_mumu的博客 6690
上一篇: 分享一个提高运维效率的 Python 脚本
下一篇: 由浅入深学MySQL之事务全攻略
大模型应用场景
博客等级 码龄5年 7630粉丝 1350原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值