Python

GoogleColabでSeleniumのスクレイピング結果が英語表記になる問題の解決策【Python】

amazon_site

課題

Seleniumを使って日本語サイトを自動化しようとすると、options.add_argument('--lang=ja-JP')を追加しても、Amazonなどの一部のウェブサイトが依然として英語で表示される場合がある。この問題は、ウェブサイトがブラウザの言語設定に依存せず、独自の方法でユーザーの言語を決定していることが原因と考えられる。

【修正を試みたコード】
def init_driver(headless=True):
    options = Options()
    options.add_argument("--headless")
    options.add_argument('--lang=ja-JP')
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    # 言語設定を追加
    prefs = {
        "intl.accept_languages": "ja,ja_JP",
        "profile.default_content_settings.popups": 0
    }
    options.add_experimental_option("prefs", prefs)
    return webdriver.Chrome(options=options)
sampole_def(search_term):
    driver.get("https://www.amazon.co.jp")
    search_bar = driver.find_element(By.ID, "twotabsearchtextbox")
    search_bar.send_keys(search_term)
    search_bar.send_keys(Keys.RETURN)

解決策

options.add_argument('--lang=ja-JP')を使用するだけでなく、特定の言語パラメータをURLに追加して、ウェブサイトにアクセスすることが有効。たとえば、Amazonの場合、以下のようにURLに?language=ja_JPを追加した。

driver.get("https://www.amazon.co.jp?language=ja_JP")

これにより、Amazonが日本語表示に切り替わり、options.add_argument('--lang=ja-JP')を使った場合よりも確実に日本語でのページ表示が保証されます。

実際、スクレイピング結果が日本語表記内容のものに正しく更新された。

試して失敗したこと

1. Accept-Languageヘッダーの設定

Accept-Languageヘッダーを直接設定することで、日本語表示を期待したが不正解。

options.add_argument("–-lang=ja-JP")
options.add_argument("–-force-device-scale-factor=1")

# Accept-Languageヘッダーを設定
options.add_argument("–-lang=ja-JP")
options.add_argument("–-lang=ja_JP.UTF-8")
options.add_argument("–-lang=ja_JP")
options.add_argument("--accept-lang=ja,ja-JP")

# 言語設定を追加
prefs = {
    "intl.accept_languages": "ja,ja_JP",
    "profile.default_content_settings.popups": 0
}
options.add_experimental_option("prefs", prefs)

結論

options.add_argument('--lang=ja-JP')だけでは解決できない場合、URLに言語パラメータを追加したら解決するかもしれない。

ABOUT ME
tona-code
24/7月末の退職を機に、pythonを使った副業にチャレンジ。 初月から5万以上の収入を得たノウハウを発信中。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です