Docker上でseleniumを使う時に、ブラウザのlcaleを日本語にしたい

実現したいこと

Docker環境でPythonのSeleniumでスクレイピングをしたいです。
このときに、あるサイトを開くと日付の順番がMM/DD/YYYYになってしまうので、YYYY/MM/DDにしたいです。そのために、localeを日本に設定しているのですが、localeが変化しません。

前提

Docker環境内で日本語フォントを読み込み、localeを日本にしました。
また、Selenium側でもoptions.add_argument('--lang=ja')で日本語に設定しました。

発生している問題・エラーメッセージ

いずれの方法をためしても、ブラウザのlocaleが英語のままです。以下を実行するとen-USと表示されます。

該当のソースコード

Dockerfile

1FROM python:3 2USER root 3 4ENV PYTHONIOENCODING utf-8 5WORKDIR /app 6COPY ./app /app 7 8# RUN apt-get update 9# RUN apt-get -y install locales && \ 10# localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 11# ENV LANG ja_JP.UTF-8 12# ENV LANGUAGE ja_JP:ja 13# ENV LC_ALL ja_JP.UTF-8 14# ENV TZ JST-9 15# ENV TERM xterm 16 17ENV DEBIAN_FRONTEND noninteractive 18 19RUN apt-get update 20RUN apt-get install -y locales 21 22RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \ 23 locale-gen ja_JP.UTF-8 && \ 24 dpkg-reconfigure locales && \ 25 /usr/sbin/update-locale LANG=ja_JP.UTF-8 26RUN update-locale LANG=ja_JP.UTF-8 27 28ENV LC_ALL ja_JP.UTF-8 29 30RUN apt-get update && apt-get install -y \ 31 wget \ 32 # Add chromium and dependences 33 udev \ 34 fonts-freefont-ttf \ 35 chromium \ 36 chromium-driver \ 37 unzip \ 38 fonts-noto-cjk \ 39 && wget -P /app/noto https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \ 40 && unzip /app/noto/NotoSansCJKjp-hinted.zip -d /app/noto \ 41 && mkdir -p /usr/share/fonts/noto \ 42 && cp /app/noto/*.otf /usr/share/fonts/noto \ 43 && chmod 644 -R /usr/share/fonts/noto/ \ 44 && fc-cache -fv \ 45 && rm -rf /app/noto \ 46 && apt-get clean \ 47 && rm -rf /var/lib/apt/lists/* \ 48 # Add selenium and Flask 49 && pip install --no-cache-dir -r requirements.txt 50 51CMD ["python", "app.py"]

以下がapp.pyです。

Python

1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from selenium.webdriver.chrome.service import Service 4from selenium.webdriver.common.by import By 5import os 6from flask import Flask 7app = Flask(__name__)8 9 10@app.route("/")11def index():12 service = Service(executable_path=r'/usr/bin/chromedriver')13 options = webdriver.ChromeOptions()14 options.add_argument('--headless')15 options.add_argument('--no-sandbox')16 options.add_argument('--disable-dev-shm-usage')17 options.add_argument('--disable-gpu')18 options.add_argument('--window-size=1200x1800')19 options.add_argument('--lang=ja')20 driver = webdriver.Chrome(service=service, options=options)21 URL = 'https://tonari-it.com/scraping-test/'22 driver.get(URL)23 driver.implicitly_wait(5)24 element = driver.find_element(By.CSS_SELECTOR, "#hoge")25 print(element.text)26 js_script_debug = """ 27 let user_language = window.navigator.language; 28 return user_language; 29 """30 return driver.execute_script(js_script_debug)31 32 33if __name__ == "__main__":34 app.run(host="0.0.0.0", port=80, debug=True)35

コメントを投稿

0 コメント