在docker容器中部署python-selenium+chrome-headless自動化腳本(續)


本文將會講到下列內容:
1、制作鏡像
2、編排容器
顯然,上次做的不好,如果移植的話,python3還是需要重新安裝,這顯然不符合我們的初衷。那么,把依賴的python3也做成鏡像吧。

一、制作python3鏡像

1、拉去最新python鏡像:docker pull python

 (我這因為已經拉取過了哈)

2、編寫Dockerfile制作鏡像:

新建文件Dockerfile,寫入下列信息:(注意:文件名只能是這個)
FROM python:alpine3.6
RUN pip install selenium
保存,執行命令:docker build . -t selenium_python:v1
(構建名為selenium_python的鏡像,版本號為:v1;構建需要指定Dockerfile路徑,這里指向當前目錄)
構建完,docker images查看鏡像列表:

二、使用docker-compose編排容器

1、安裝這貨

yum install docker-compose

 2、新建配置文件docker-compose.yml,同樣的,后面執行命令時也需要指定該文件路徑

version: "2.0"
services:
  python:
    image: selenium_python:v1
    volumes:
      - ./baidu.py:/root/baidu.py  # 將本地文件映射到容器內,前面的路徑是本機的,后面的是容器的。注意:可以指定具體文件,也可以指定路徑
    command: python /root/baidu.py  # 定義啟動容器執行的命令
    depends_on:
      - chrome #映射的域名,腳本中要把域名改成這個
  chrome:
    image: selenium/standalone-chrome:latest
    ports:
      - "4444:4444"
    shm_size: 2g

修改腳本,上篇文章中的腳本,稍微改下:

訪問selenium-chrome服務改為: command_executor="http://chrome:4444/wd/hub"
driver前加上一點等待時間,防止selenium-chrome還未啟動完成,就開始執行腳本。
改完的baidu.py如下:
# /usr/bin/bash python
# -*- coding:utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

time.sleep(5)
driver = webdriver.Remote(
    command_executor="http://chrome:4444/wd/hub",
    desired_capabilities=DesiredCapabilities.CHROME
)

driver.get("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=%E5%A5%B3%E7%A5%9E%E8%8A%82%E5%BF%AB%E4%B9%90&oq=iPad%25E7%2594%25BB%25E6%25B0%25B4%25E5%25BD%25A9&rsv_pq=da863c960031fa89&rsv_t=320bU5S7GOOB43J2GLgjE66RWcLR2giCuNktmA5I6Wm7VcW7dZ1It2hKWxs&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=8595&rsv_sug3=16&rsv_sug1=14&rsv_sug7=101&rsv_sug2=0&rsv_sug4=11686")
content = driver.title.split("_")[0]
print(content)
driver.close()

 

3、啟動: docker-compose up -d

# 如果出現下面的提示,關掉上次啟動的容器即可

如果沒出現上面的,那就會出現名場面了:

雖然綠了,但也不確定是不是真的搞定了撒,查看下日志:

docker logs root_python_1(root_python_1是編排工具自動給python那個容器命名的)
又看到這個祝福了,真棒!上次縈繞這些的時候,仿佛就在一個禮拜前。
收工,餓了!
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM