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

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 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 进行项目开发。
相关文章
|
8天前
|
Web App开发 数据采集 存储
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
|
4天前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
3天前
|
数据采集 人工智能 程序员
避坑指南!细说Python自动化办公的5大缺点
Python如今变得愈发流行,不仅程序员,许多非专业人员也开始学习它,主要目的是提高工作效率而非成为专家。然而,Python自动化办公并非完美,存在一些缺点:首先,它仅支持Windows系统,这对Mac用户不太友好;其次,其功能虽强大但不够专业,大多功能一行代码即可完成;再者,代码包体积较大,约200MB;此外,技术门槛较低,难以形成职业优势;最后,相较于专业代码,它的启动速度较慢。即便如此,它依然比人工操作高效得多。如果能接受以上缺点,可参考《50讲·Python自动化办公》教程,快速掌握自动化办公技能。
42 29
|
3天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
8天前
|
测试技术 API Python
python在自动化测试中的经典例子
python在自动化测试中的经典例子
23 12
|
8天前
|
运维 监控 安全
python在自动化运维中的妙用分享
python在自动化运维中的妙用分享
24 8
|
6天前
|
运维 监控 API
自动化运维:使用Python脚本进行日常管理
【9月更文挑战第6天】在现代的IT环境中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何通过Python脚本简化日常的运维任务,包括批量配置管理和日志分析。我们将从基础语法讲起,逐步深入到脚本的实际应用,旨在为读者提供一套完整的解决方案,以实现运维工作的自动化和优化。
11 1
|
10天前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
35 5
|
10天前
|
运维 Linux 测试技术
自动化运维:使用Python脚本简化日常任务
【8月更文挑战第34天】在快节奏的IT环境中,自动化运维成为提升效率、降低错误率的关键。本文以Python脚本为例,展示如何通过编写简单的脚本来自动化日常运维任务,如批量更改文件权限、自动备份数据等。文章不仅提供代码示例,还探讨了自动化运维带来的益处和实施时应注意的问题。
|
11天前
|
运维 监控 网络安全
自动化运维:使用Python脚本简化日常任务
【8月更文挑战第33天】在本文中,我们将深入探讨如何通过Python脚本来自动化执行常见的运维任务。从基础的服务器健康检查到复杂的部署流程,Python因其简洁和功能强大的特性,成为自动化工具的首选。文章将展示编写Python脚本的基本方法,并通过实际示例演示如何应用于真实场景,旨在帮助读者提升效率,减少重复性工作。