Puppeteer-py:Python 中的无头浏览器自动化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Puppeteer-py:Python 中的无头浏览器自动化
  1. 引言
    在当今快速发展的互联网时代,自动化测试和数据抓取变得越来越重要。Puppeteer-py 作为一个 Python 库,提供了一种简单而强大的方法来控制无头浏览器,实现网页的自动化操作。无论是进行端到端的测试,还是抓取动态生成的数据,Puppeteer-py 都能提供极大的帮助。
  2. 什么是 Puppeteer-py
    Puppeteer-py 是 Puppeteer 的 Python 端口,Puppeteer 是一个 Node.js 库,用于控制无头 Chrome 或 Chromium 浏览器。Puppeteer-py 允许 Python 开发者以编程方式与浏览器交互,执行各种自动化任务。
  3. Puppeteer-py 的特性
    Puppeteer-py 继承了 Puppeteer 的所有特性,并针对 Python 进行了优化。以下是一些关键特性:
    ● 无头浏览器控制:无需打开浏览器界面即可控制浏览器。
    ● 生成截图和 PDF:轻松捕获网页的屏幕截图或生成 PDF 文件。
    ● 自动化表单提交:自动化填写和提交网页表单。
    ● 捕获元素信息:获取页面元素的文本、属性等信息。
    ● 模拟用户行为:模拟点击、滚动、键盘输入等用户行为。
    ● 网络请求拦截:拦截、修改或阻止网络请求。
    ● JavaScript 执行:在页面上下文中执行 JavaScript 代码。
    ● 异步操作:API 设计为异步,提高并发处理能力。
    4.使用 Puppeteer-py 访问京东
    本文将以访问京东网站为案例,演示如何使用 Puppeteer-py 进行自动化操作。详细过程如下:
    4.1 初始化浏览器和页面
    首先,我们需要初始化一个浏览器实例和一个新的页面
    4.2 导航到京东
    接下来,我们将导航到京东的主页:
    4.3 搜索商品
    假设我们要搜索“Python 书籍”,我们可以模拟用户在搜索框中输入文本并点击搜索按钮的行为:
    4.4 等待搜索结果
    搜索结果可能需要一些时间来加载,我们可以使用 page.waitForSelector 方法等待特定的元素加载完成:
    4.5 截图搜索结果
    一旦搜索结果加载完成,我们可以对搜索结果页面进行截图:
    4.6 关闭浏览器
    最后,我们关闭浏览器实例:
    完整代码过程如下所示:
    ```import asyncio
    from puppeteer import Browser, BrowserContext

proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

async def main():

# 设置代理服务器
proxy = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"

# 启动浏览器
browser = await Browser.launcher().launch({
    'args': [
        '--proxy-server=' + proxy,
        # 其他需要的启动参数可以在这里添加
    ]
})

# 创建浏览器上下文,并设置代理
browser_context = await browser.createIncognitoBrowserContext()
page = await browser_context.newPage()

# 设置页面代理
await page.setExtraHTTPHeaders({
    'Proxy-Host': proxyHost,
    'Proxy-Port': proxyPort,
    'Proxy-Username': proxyUser,
    'Proxy-Password': proxyPass,
})

# 导航到京东
await page.goto('https://www.jd.com')

# 搜索“Python 书籍”
await page.type('input[name="keyword"]', 'Python 书籍')
await page.click('button[name="search-btn"]')

# 等待搜索结果加载
await page.waitForSelector('div.gl-item')

# 截图搜索结果
await page.screenshot(path='jd_search_result.png')

# 关闭浏览器
await browser.close()

if name == 'main':
asyncio.run(main())
```

  1. 结论
    Puppeteer-py 是一个功能强大的 Python 库,为自动化 web 交互提供了便利。无论是数据抓取、自动化测试还是生成网页截图,Puppeteer-py 都能满足你的需求。通过本文的介绍和示例代码,你应该能够开始使用 Puppeteer-py 进行项目开发。
相关文章
|
10天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
44 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
5天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
23 2
|
7天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
19 3
|
5天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
20 1
|
13天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
14天前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####
|
13天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
14天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
|
11天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
13天前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式