web-dev-qa-db-ja.com

Selenium python bindingsの言語オプションを変更する際の問題

pythonでSeleniumと組み合わせてスクリプトを作成し、Google Playストアからさまざまなアプリ名をスクレイピングしました。スクリプトを実行すると、すべてのアプリ名が通過します。しかし、結果は英語ではない私の母国語。

Seleniumの言語オプションを変更するにはどうすればよいですかpython bindings?

私の試み(言語オプションを変更しようとしましたが失敗しました):

from Selenium import webdriver
from Selenium.webdriver.common.by import By
from Selenium.webdriver.chrome.options import Options
from Selenium.webdriver.support.ui import WebDriverWait as wait
from Selenium.webdriver.support import expected_conditions as EC

link = 'https://play.google.com/store'

chrome_options = Options()
chrome_options.add_argument("accept-language=en-US")

with webdriver.Chrome(options=chrome_options) as driver:
    driver.get(link)
    for item in wait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.details a.title'))):
        print(item.text)

私が持っている出力は英語ではない私の母国語です。

9
MITHU

利用可能なすべてのクロム用スイッチ(ほとんどはchromeにも適用されます)は、次の場所にあります https://peter.sh/experiments/chromium-command-line-switches/ #lang

-accept-languageをそれらの1つとして見つけていませんが、-lang = localeはその1つです。

これを使用するには、chromeセッションを開くプロファイルがそれをサポートする必要があります(サポートされる言語の一部であるため)。

デフォルトではありません。あなたの母国語だけがその一部になります。追加するには、新しいプロファイルを作成できます

以下のコードは、プロファイルごとに1つの言語を使用します。プロファイルに--lang = localeがあれば動作するはずですが、Chrome UI実装はmain/first chromeウィンドウが開いています。詳細な説明については、@ sarjoorの回答を参照してください: 複数の言語で言語がどのように機能するかchrome windows

新しいプロファイルを作成するには: chromeプロファイルを作成する方法

プロファイルが作成され、セッションを開始したら、chrome:// settings/languagesにアクセスします。

それに希望する言語を追加します。言語をリストの一番上に移動します。

次に、2つのプロファイルスイッチを指定する必要があります。

chrome_options.add_argument('--user-data-dir=profileDirectory')
chrome_options.add_argument('--profile-directory="yourProfileName))

プロファイルディレクトリと名前は、chrome:// versionで確認できます。

MacOSでは次の場所にあります。
プロファイルパス/ Users/auto/Library/Application Support/Google/Chrome/Profile 1

profile_map = {
    'en': 'Default',
    'fr': 'Profile 1',
    'de': 'Profile 2'
}
chrome_options.add_argument('--user-data-dir=/Users/auto/Library/Application Support/Google/Chrome')
chrome_options.add_argument('--profile-directory={}'.format(profile_map['de']))

--langスイッチを追加することもできますが、プロファイルに必要な言語がデフォルトの言語である場合は、それがなくても機能するはずです。

chrome_options.add_argument("--lang='de'")

with webdriver.Chrome(options=chrome_options) as driver:
    driver.get(link)
    for item in wait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.details a.title'))):
        print(item.text)
0
Nic Laforge