ToB企服应用市场:ToB评测及商务社交产业平台

标题: Puppeteer-py:Python 中的无头浏览器自动化 [打印本页]

作者: 莱莱    时间: 2024-8-6 10:14
标题: 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 进行了优化。以下是一些关键特性:

4.使用 Puppeteer-py 访问京东

本文将以访问京东网站为案例,演示如何使用 Puppeteer-py 进行自动化操纵。具体过程如下:
4.1 初始化浏览器和页面

起首,我们需要初始化一个浏览器实例和一个新的页面
4.2 导航到京东

接下来,我们将导航到京东的主页:
4.3 搜索商品

假设我们要搜索“Python 册本”,我们可以模拟用户在搜索框中输入文本并点击搜索按钮的行为:
4.4 等待搜索效果

搜索效果可能需要一些时间来加载,我们可以使用 page.waitForSelector 方法等待特定的元素加载完成:
4.5 截图搜索效果

一旦搜索效果加载完成,我们可以对搜索效果页面进行截图:
4.6 关闭浏览器

最后,我们关闭浏览器实例:
完整代码过程如下所示:
  1. import asyncio
  2. from puppeteer import Browser, BrowserContext
  3. proxyHost = "www.16yun.cn"
  4. proxyPort = "5445"
  5. proxyUser = "16QMSOML"
  6. proxyPass = "280651"
  7. async def main():
  8.     # 设置代理服务器
  9.     proxy = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
  10.     # 启动浏览器
  11.     browser = await Browser.launcher().launch({
  12.         'args': [
  13.             '--proxy-server=' + proxy,
  14.             # 其他需要的启动参数可以在这里添加
  15.         ]
  16.     })
  17.     # 创建浏览器上下文,并设置代理
  18.     browser_context = await browser.createIncognitoBrowserContext()
  19.     page = await browser_context.newPage()
  20.    
  21.     # 设置页面代理
  22.     await page.setExtraHTTPHeaders({
  23.         'Proxy-Host': proxyHost,
  24.         'Proxy-Port': proxyPort,
  25.         'Proxy-Username': proxyUser,
  26.         'Proxy-Password': proxyPass,
  27.     })
  28.     # 导航到京东
  29.     await page.goto('https://www.jd.com')
  30.    
  31.     # 搜索“Python 书籍”
  32.     await page.type('input[name="keyword"]', 'Python 书籍')
  33.     await page.click('button[name="search-btn"]')
  34.    
  35.     # 等待搜索结果加载
  36.     await page.waitForSelector('div.gl-item')
  37.    
  38.     # 截图搜索结果
  39.     await page.screenshot(path='jd_search_result.png')
  40.    
  41.     # 关闭浏览器
  42.     await browser.close()
  43. if __name__ == '__main__':
  44.     asyncio.run(main())
复制代码
5. 结论

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4