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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
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 进行项目开发。
相关文章
|
6天前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
17 4
|
8天前
|
运维 监控 网络安全
自动化运维的魔法:如何用Python简化日常任务
【10月更文挑战第9天】在数字时代的浪潮中,运维人员面临着日益增长的挑战。本文将揭示如何通过Python脚本实现自动化运维,从而提高效率、减少错误,并让运维工作变得更具创造性。我们将探索一些实用的代码示例,这些示例将展示如何自动化处理文件、监控系统性能以及管理服务器配置等常见运维任务。准备好让你的运维工作升级换代了吗?让我们开始吧!
|
18天前
|
Python
Python 自动化操作 Excel - 02 - xlwt
Python 自动化操作 Excel - 02 - xlwt
35 14
|
18天前
|
Python
Python 自动化操作 Excel - 03 - xlutils
Python 自动化操作 Excel - 03 - xlutils
26 13
|
18天前
|
Python
Python 自动化操作 Excel - 01 - xlrd
Python 自动化操作 Excel - 01 - xlrd
27 9
|
14天前
|
运维 监控 网络安全
Python 在网络运维方面的自动化应用实例
Python 在网络运维方面的自动化应用实例
39 4
|
14天前
|
Web App开发 XML JavaScript
Python 操作浏览器:让 Python 和 Web 世界合二为一
Python 操作浏览器:让 Python 和 Web 世界合二为一
21 3
|
21天前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
14天前
|
存储 BI 数据库
使用 Python 实现自动化办公
使用 Python 实现自动化办公
18 0
|
15天前
|
数据采集 消息中间件 API
Python爬虫验证码识别——手机验证码的自动化处理
Python爬虫验证码识别——手机验证码的自动化处理
21 0