栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

用 python:alpine 应用容器制作 selenium+chromium 的 docker 镜像,并设置中文支持

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用 python:alpine 应用容器制作 selenium+chromium 的 docker 镜像,并设置中文支持

使用 python:3.8.8-alpine3.13 的应用镜像,制作 selenium+chromium 的 docker 镜像,并设置中文支持。

DockerFile 内容如下:

FROM python:3.8.8-alpine3.13

ADD SourceHanSansCN-Normal.otf /usr/share/fonts/

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk --no-cache add libexif udev xvfb xvfb-run gcc libffi-dev openssl-dev musl-dev chromium chromium-chromedriver

RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && /usr/local/bin/python -m pip install --upgrade pip
RUN pip install selenium

RUN mkdir /data
WORKDIR /data

打包镜像:

build -t 'selenium:0.1' .

运行容器:

docker run -it --rm --name 'selenium' selenium:0.1.2 sh

这里需要注意的是中文字体的选择,字体添加到容器里面后,需要让容器能识别这是中文的字体,否则添加进去后,也无法在浏览器中显示中文。

我上面的添加的字体文件 SourceHanSansCN-Normal.otf 是思源黑体这个字体,可以使用 otf 后缀的字体文件。字体添加进去后执行查看是否为中文字体。(如果字体是镜像打包完后,运行容器时添加进去的,可能需要执行刷新:fc-cache -f)
检查方法如下:

fc-list :lang=zh

查询示例如下:

可以看到有思源黑体的字体存在。

python 测试代码,保存为 test.py,代码如下:

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--no-sandbox")
options.add_argument("window-size=1920,1080")
driver=webdriver.Chrome(options=options)

driver.get('http://www.baidu.com/')
time.sleep(5)
title=driver.title
print(title)
driver.save_screenshot('screenshot.png')
driver.close()

在容器中执行代码,并保存截图:

xvfb-run python3 test.py -s -screen 0 1920x1080x16


再把容器里的截图拷贝出来:

docker cp selenium:/data/screenshot.png .

在系统中查看 screenshot.png 图片,能正常显示中文字体:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号