Linux下制作docker镜像,用于执行selenium模块,容器无图形界面的情况下调用有图形界面的chrome浏览器

内容分享5天前发布
1 0 0

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

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...