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())

5. 结论

Puppeteer-py 是一个功能强大的 Python 库,为自动化 web 交互提供了便利。无论是数据抓取、自动化测试还是生成网页截图,Puppeteer-py 都能满足你的需求。通过本文的介绍和示例代码,你应该能够开始使用 Puppeteer-py 进行项目开发。

相关推荐
海绵宝宝转agent8 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭8 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT8 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
2601_962071579 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境10 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路10 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师10 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师10 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论
Zootopia62610 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
Y38153266210 小时前
搜索 API 延迟优化:并发数、超时与超时的真实代价
python·搜索引擎