制作selenium+chromium 的 docker 镜像,并设置中文支持(思源黑体 SourceHanSansCN-Normal.otf 可以从这里下载 https://github.com/adobe-fonts/source-han-sans/releases/download/2.004R/SourceHanSansCN.zip)
制作好的镜像中执行
fc-list :lang=zh 查看字体
chromium-browser --version 查看chrome版本
chromedriver --version 查看驱动版本
python --version 查看python版本
pip list 查看python模块版本
apk --version apk包管理工具
docker build -t 'selenium-chrome:latest . (默认当前目录下的Dockerfile 文件)
docker build -t 'selenium-chrome:latest -f ./selenium-chrome . (-f 指定dockerfile文件名)
Dockerfile
FROM python:3.8.8-alpine3.13 AS build
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add --no-cache gcc libffi-dev musl-dev && \
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \
pip install -U pip &&\
pip install --timeout 30 --user --no-cache-dir --no-warn-script-location selenium
FROM python:3.8.8-alpine3.13
ENV LOCAL_PKG="/root/.local"
COPY --from=build ${LOCAL_PKG} ${LOCAL_PKG}
COPY SourceHanSansCN-Normal.otf /usr/share/fonts/
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add --no-cache xvfb-run chromium chromium-chromedriver && \
ln -sf ${LOCAL_PKG}/bin/* /usr/local/bin/
RUN mkdir /data
WORKDIR /data
安装gcc libffi-dev musl-dev 这3个包,是安装 selenium 需要的依赖包。selenium 安装到 /root/.local 这目录。
重新打包,然后使用上一个打包的 /root/.local 目录复制到新的镜像里面,然后安装 xvfb-run chromium chromium-chromedriver。xvfb-run 是为了在容器无图形界面的情况下调用有图形界面的浏览器而使用的。
启动容器执行python脚本
xvfb-run --server-args="-screen 0 1920x1080x16" python baidu_script.py
baidu_script.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/')
title=driver.title
print(title)
driver.save_screenshot('screenshot.png')
driver.close()
网友评论