介绍
在使用scrapy playwright和selenium等图形化进行爬虫实现时,一个可用的docker镜像显的必不可少。本次记录一下如何在docker中实现一个基础镜像。
软件选择
名称 | 版本 | 说明 |
---|---|---|
ubuntu | 20.04 | docker镜像 |
python | 3.12 | |
xvfb | 实现虚拟桌面 | |
x11vnc | 实现远程窗口的连接 | |
novnc | 实现通过浏览器显示窗口 | |
websockify | 实现端口转发 |
过程
一、镜像
本次选择ubuntu 20.04版本进行构建。在高版本如22.04 24.04版本中遇到一些问题,没有去处理。
docker pull ubuntu:20.04
docker run --name browser -p 6080:80 -itd ubuntu:20.04 bash
二、基础设置
- 进入容器
docker exec -ti browser bash
- 环境变量设置 DEBCONF_NONINTERACTIVE_SEEN可以解决一些安装交互问题
export TZ=Asia/Shanghai
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
export DEBCONF_NONINTERACTIVE_SEEN=true
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
- 更新系统,安装一些必要的包
apt-get update && apt-get upgrade -y
- 安装x11vnc novnc xvfb websockify。
apt-get install -y x11vnc novnc xvfb websockify
- 使用ppa安装python3.12
apt-get install -y software-properties-common
add-apt-repository ppa:deadsnakes/ppa -y
- 安装python3.12
apt-get install -y python3.12 python3.12-full python3-pip
- 安装pip3.12
apt-get install -y curl
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.12 get-pip.py
- 创建venv环境
python3.12 -m venv venv
三、虚拟桌面配置
使用xvfb实现虚拟桌面
- 设置虚拟窗口变量
export DISPLAY=:3
- 启动虚拟窗口
Xvfb -ac :3 -screen 0 1960x1080x24 &
四、x11vnc配置
- 设置访问密码
echo "123" > /etc/x11vnc.pass
- 使用x11vnc实现远程访问
x11vnc -ncache 10 -display :3 -listen 0.0.0.0 -rfbport 5900 -xkb -forever -loop -noxdamage -repeat -passwdfile /etc/x11vnc.pass -shared &
五、websockify配置
使用websockify实现流量转发
websockify --web /usr/share/novnc 80 localhost:5900 &
测试
访问链接如下:http://IP:6080/vnc.html 输入密码完成连接,连接后显示一个黑色的窗口。
安装playwright
./venv/bin/pip3.12 install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple
使用playwright安装浏览器
./venv/bin/playwright install chrome
打开一个浏览器
问题
一、解决浏览器中文乱码问题
apt-get install fonts-wqy-zenhei
评论区