diff --git a/Dockerfile37 b/Dockerfile37 new file mode 100644 index 0000000..0b291b7 --- /dev/null +++ b/Dockerfile37 @@ -0,0 +1,53 @@ +FROM python:3.7 + +ARG CDV=77.0.3865.40 + +RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \ +echo 'deb http://mirrors.163.com/debian/ jessie main non-free contrib' > /etc/apt/sources.list && \ +echo 'deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib' >> /etc/apt/sources.list && \ +echo 'deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib' >> /etc/apt/sources.list + +RUN apt-get -y update + +ADD . /usr/src/app +WORKDIR /usr/src/app + +RUN wget -c https://dl.lancdn.com/landian/soft/chrome/m/77.0.3865.120_amd64.deb && \ +apt-get install -y adwaita-icon-theme at-spi2-core dbus dconf-gsettings-backend dconf-service fonts-liberation glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas libappindicator3-1 libasound2 libasound2-data libatk-bridge2.0-0 libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data libavahi-common3 libcolord2 libcups2 libdbus-1-3 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdconf1 libdrm2 libfile-basedir-perl libfile-desktopentry-perl libfile-mimeinfo-perl libfontenc1 libgl1-mesa-glx libglapi-mesa libgnutls-deb0-28 libgtk-3-0 libgtk-3-bin libgtk-3-common libhogweed2 libindicator3-7 libjson-glib-1.0-0 libjson-glib-1.0-common libnettle4 libnspr4 libnss3 libproxy1 librest-0.7-0 libsoup-gnome2.4-1 libsoup2.4-1 libwayland-client0 libwayland-cursor0 libx11-protocol-perl libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxinerama1 libxkbcommon0 libxmu6 libxmuu1 libxpm4 libxrandr2 libxshmfence1 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 multiarch-support x11-utils x11-xserver-utils xdg-utils xkb-data libgconf2-4 lsb-release && \ +dpkg -i 77.0.3865.120_amd64.deb && \ +wget -c http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE + + +RUN wget -c https://npm.taobao.org/mirrors/chromedriver/$CDV/chromedriver_linux64.zip && \ +apt-get install -y unzip && \ +unzip chromedriver_linux64.zip + +RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider --no-cache-dir -r requirements.txt +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + + + + + + + +ENV DEBIAN_FRONTEND noninteractive +ENV TZ Asia/Shanghai + + +## install python requirements +RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider --no-cache-dir -r requirements.txt +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +## install ntpdate, not accept but saving code +#RUN echo 'deb http://mirrors.163.com/debian/ jessie main non-free contrib \ +# deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib \ +# deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib' > /etc/apt/sources.list \ +# && apt-get update\ +# && apt-get install ntpdate -y \ + + +#EXPOSE 5010 + +CMD [ "python", "run.py" ] +#ENTRYPOINT [ "python", "run.py" ] diff --git a/TickerConfig.py b/TickerConfig.py index 1cc75d5..c56df7c 100644 --- a/TickerConfig.py +++ b/TickerConfig.py @@ -121,6 +121,9 @@ COOKIE_TYPE = 1 # chromedriver配置版本只要和chrome的大版本匹配就行 CHROME_PATH = "/Users/wenxianping/Downloads/chromedriver" +#为了docker37 准备的环境变量,windows环境可以不用管这个参数 +CHROME_CHROME_PATH = "/usr/src/app/google-chrome"; + # 如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值 RAIL_EXPIRATION = "" RAIL_DEVICEID = "" diff --git a/config/getCookie.py b/config/getCookie.py index fdc1b59..a4d4b06 100644 --- a/config/getCookie.py +++ b/config/getCookie.py @@ -2,6 +2,7 @@ import json import random import re import time +import os import TickerConfig from config.urlConf import urls @@ -14,7 +15,14 @@ def getDrvicesID(session): if TickerConfig.COOKIE_TYPE is 1: from selenium import webdriver cookies = [] - driver = webdriver.Chrome(executable_path=TickerConfig.CHROME_PATH) + # 解决放镜像里 DevToolsActivePort file doesn't exist的问题 + options = webdriver.ChromeOptions() + if os.name != 'nt' and TickerConfig.CHROME_CHROME_PATH: + options = webdriver.ChromeOptions() + options.binary_location = TickerConfig.CHROME_CHROME_PATH + options.add_argument("--no-sandbox") + options.add_argument("--headless") + driver = webdriver.Chrome(executable_path=TickerConfig.CHROME_PATH,chrome_options=options) driver.get("https://www.12306.cn/index/index.html") time.sleep(10) for c in driver.get_cookies():