0
1

Heroku+Selenium+Chrome+Pythonでの日本語設定にハマった話

Posted at

Heroku + Selenium + Chrome + Pythonの組み合わせでスクレイピングをしていたのですが、dynoを再起動したせいか、なぜか突然ページの言語が英語に。

色々と調べてみたところ、optionsの設定が足りなかったようで、だいぶハマりました。

従来の設定

これまでwebdriverに設定していたoptionsの内容です。

    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--window-size=1920,1080')
    options.add_argument('start-maximized')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
    service = Service(executable_path=os.environ.get("CHROMEDRIVER_PATH"))
    driver = webdriver.Chrome(service=service, options=options)
    return driver

これまでは<html lang="ja">となっていたのに、なぜか<html lang="en">になっていました。

次に試したこと

言語設定の方法で検索したところ、langのオプションが必要とのことで設定してみました。

    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--lang=ja-JP') # ここ追加
    options.add_argument('--window-size=1920,1080')
    options.add_argument('start-maximized')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
    service = Service(executable_path=os.environ.get("CHROMEDRIVER_PATH"))
    driver = webdriver.Chrome(service=service, options=options)
    return driver

これでもやはり英語のまま。

たどり着いた情報

Googleではなかなか見つからなかったので、Xでも検索してみると、以下のポストが。

なるほど、優先言語(accept-language)なるものがあるのですね。もしかしたらどこかのタイミングでこれが変わってしまっていたのかもしれません。

設定方法は以下の記事を参考にしました。

最終的な設定

最終的には、headless=newを入れたのと、add_experimental_optionでjaを設定した2点で解決しました。

    options = webdriver.ChromeOptions()
    options.add_argument('--headless=new') # ここ変更
    options.add_argument('--lang=ja-JP')
    options.add_argument('--window-size=1920,1080')
    options.add_argument('start-maximized')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_experimental_option('prefs', {'intl.accept_languages': 'ja'}) # ここ追加
    options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
    service = Service(executable_path=os.environ.get("CHROMEDRIVER_PATH"))
    driver = webdriver.Chrome(service=service, options=options)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1