首页 > 编程语言 >python+playwright 学习-55 在docker 容器中运行playwright脚本

python+playwright 学习-55 在docker 容器中运行playwright脚本

时间:2023-04-23 13:15:03浏览次数:48  
标签:playwright python 55 镜像 docker root page

前言

Dockerfile.focal可用于在 Docker 环境中运行 Playwright 脚本。这些镜像包括在 Docker 容器中运行浏览器所需的所有依赖项,还包括浏览器本身。
playwright 在linux 系统上目前只支持Ubuntu 系统的部分版本,centos 和debian系统上是没法运行的。

镜像

查看所有可用的图像标签https://mcr.microsoft.com/en-us/product/playwright/python/about

Docker 镜像由 GitHub Actions 自动发布。我们目前发布带有以下标签的图像(v1.20.0在本例中是一个示例:):

  • :next- 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 tip-of-tree 镜像版本。
  • :next-focal- 基于 Ubuntu 20.04 LTS (Focal Fossa) 的 tip-of-tree 镜像版本。
  • :v1.20.0- Playwright v1.20.0 发布基于 Ubuntu 20.04 LTS (Focal Fossa) 的 docker 镜像。
  • :v1.20.0-focal- Playwright v1.20.0 发布基于 Ubuntu 20.04 LTS (Focal Fossa) 的 docker 镜像。
  • :sha-XXXXXXX- 每个更改 docker 文件或浏览器的提交的 docker 图像,用短 sha标记(SHA 提交的前 7 位数字)。

如果可能,建议始终将 Docker 映像固定到特定版本。如果 Docker 映像中的 Playwright 版本与项目/测试中的版本不匹配,Playwright 将无法找到浏览器可执行文件。

我们目前发布基于以下Ubuntu版本的镜像:
Ubuntu 22.04 LTS (Jammy Jellyfish),图像标签包括jammy(未针对 Java 发布)
Ubuntu 20.04 LTS (Focal Fossa),图像标签包括focal
为 Firefox 和 WebKit 构建的浏览器是为glibc库构建的。不支持基于musl标准库的 Alpine Linux 和其他发行版。

docker 使用

此 Docker 镜像已发布到 Microsoft Artifact Registry, 访问地址https://mcr.microsoft.com/en-us/product/playwright/python/about

拉取镜像

目前最新的镜像版本v1.32.0-focal

docker pull mcr.microsoft.com/playwright/python:v1.32.0-focal

运行容器

默认情况下,Docker 镜像将使用root用户来运行浏览器。这将禁用 root 无法使用的 Chromium 沙箱。如果您运行可信代码(例如端到端测试)并希望避免管理单独用户的麻烦,那么 root 用户可能没问题。对于网络抓取或爬行,我们建议在 Docker 容器内创建一个单独的用户并使用 seccomp 配置文件。
在受信任的网站上,您可以避免创建单独的用户并为其使用 root,因为您信任将在浏览器上运行的代码。

docker run -it --rm --ipc=host mcr.microsoft.com/playwright/python:v1.32.0-focal /bin/bash

使用示例

待执行的代码run.py

from playwright.sync_api import Playwright, sync_playwright, expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch()
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://127.0.0.1:8000/login.html")
    print("输入用户名:yoyo")
    page.get_by_placeholder("请输入用户名").click()
    page.get_by_placeholder("请输入用户名").fill("yoyo")
    page.get_by_placeholder("请输入密码").click()
    print("输入用户名:123456")
    page.get_by_placeholder("请输入密码").fill("123456")
    page.get_by_role("button", name="立即登录 >").click()
    page.wait_for_load_state('networkidle')
    print(f"登录后的页面:{page.title()}")

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

run.py 文件放到自己服务器的指定目录,如:/root/code 下

启动容器

docker run -it --rm -v /root/code:/root --ipc=host mcr.microsoft.com/playwright/python:v1.32.0-focal /bin/bash

在容器内部执行代码

root@0c1f3728d019:/# python /root/run.py 
输入用户名:yoyo
输入用户名:123456
登录后的页面:首页
root@0c1f3728d019:/# 

可以看到运行结果

运行完成后,执行exit退出容器

标签:playwright,python,55,镜像,docker,root,page
From: https://www.cnblogs.com/yoyoketang/p/17346237.html

相关文章

  • python.h的使用方法
    Python.h是C语言中调用Python解释器的头文件,其中包含了许多常用的函数和数据类型。以下是Python.h中常用的方法和高级方法的示例代码:常用方法(1)Py_Initialize该函数用于初始化Python解释器。调用该函数后,才能使用Python解释器中的函数和模块。示例代码:#include<Python.h>i......
  • 图与网络——最小费用最大流Python实现
    最小费用最大流问题是经济学和管理学中的一类典型问题。在一个网络中每段路径都有“容量”和“费用”两个限制的条件下,此类问题的研究试图寻找出:流量从A到B,如何选择路径、分配经过路径的流量,可以在流量最大的前提下,达到所用的费用最小的要求。如n辆卡车要运送物品,从A地到B地。由于......
  • python--多线程:锁 、全局锁、Queue队列以及线程池
    关于如何加锁,获取钥匙,释放锁:lock=threading.Lock():生成锁对象,全局唯一;lock.acquire():获取锁。未获取到会阻塞程序,直到获取到锁才会往下执行;lock.release():释放锁,归回后,其他人也可以调用;【注意事项】:lock.acquire()和lock.release()必须成对出现,否则就有可能造成......
  • 如何在交互式环境中执行Python程序
    相信接触过Python的小伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行、命令行窗口运行、开发工具上运行等,其中在不同的操作平台上还互不相同。今天,小编讲些Python基础的内容,以Windows下交互式环境为依托,演示Python程序的运行。一般来说,顺利安装Python......
  • 手把手教你使用Python网络爬虫获取菜谱信息
    今日鸡汤一腔热血勤珍重,洒去犹能化碧涛。/1前言/    在放假时,经常想尝试一下自己做饭,下厨房这个网址是个不错的选择。    下厨房是必选的网址之一,主要提供各种美食做法以及烹饪技巧。包含种类很多。    今天教大家去爬取下厨房的菜谱,保存在world文档,方便日后制作自......
  • 手把手教你用Python打造一款批量下载视频并能可视化显示下载进度的下载器
    今日鸡汤桃之夭夭,灼灼其华。/1前言/    平时宅在家的我们最爱做的事莫过于追剧了,但是有时候了,网络原因,可能会让你无网可上。这个时候那些好看的电视剧和电影自然是无法观看了,本期我们要讲的就是怎样下载这些视频。/2项目目标/    通过Python程序对所感兴趣的视频进行批量......
  • 手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
    /1前言/在家闲着,做个小项目,基于Python,实现一个语聊小机器人,分享给大家。项目整体比较简单,官方文档介绍的非常详细,可快速上手。/2 目标/将图灵机器人放到桌面,实现工作助手/陪聊功能。/3 涉及的库/V1.0版本:requests、jsonV2.0版本:requests、json、selenium(实现功能:如图灵返回结果......
  • 一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取
    前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法。本文的总体思路如下:找到正确的URL,获取源码;利用bs4解析源码,获取歌曲名和歌曲ID;调用网易云歌曲API,获取歌词;将歌词写入文件,并存入本地。本文的目的是获取网易云......
  • Unlock the Power of High-Performance Networking with the IPQ9554
    UnlockthePowerofHigh-PerformanceNetworkingwiththeIPQ9554Intoday'sworld,reliableandhigh-speedinternetconnectivityisessentialforeverythingfromonlinegamingandstreamingtoremoteworkandlearning.Whetheryou'reaconsumer......
  • 关于python爬虫解析的问题
    在进行Python爬虫解析时,需要注意以下事项:1、良好的网站使用协议:需要遵守网站的robots.txt文件,以确保你的爬虫程序不会将网站拦截下来。2、编码问题:需要正确设置HTTP头和解析器的编码,以确保爬虫程序能够正确地解析网站的信息。3、数据解析:需要适当地处理HTML文档中的标签,以便从......