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)
私が持っている出力は英語ではない私の母国語です。
利用可能なすべてのクロム用スイッチ(ほとんどは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)