我已经在python中与硒结合使用创建了一个脚本,以从Google Play商店中抓取不同的应用程序名称,当我执行脚本时,它们都会通过。但是,结果正在转换为我的非英语母语。
如何在硒python绑定中修改语言选项?
我的尝试(试图更改语言选项,但失败了):
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)
我得到的输出是我的母语,不是英语。
答案 0 :(得分:1)
我认为您设置语言的语法已关闭。代替
chrome_options.add_argument("accept-language=en-US")
尝试
chrome_options.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
第二轮
'intl.accept_languages'
尚无法提供英语。但是经过更多搜索后,我发现以下方法可能会起作用-试试看吗?
chrome_options.add_argument("--lang=en-US")
第三轮
尝试按照Fenio的建议使用en-GB:
chrome_options.add_argument("--lang=en-GB”)
答案 1 :(得分:1)
不起作用:
我尝试了--lang,但对我却没有用:
chrome_options.add_argument("--lang=en")
OR
chrome_options.add_argument("--lang=en-US")
工作解决方案:
经过一些研究,我发现要解决此问题,我们必须使用实验选项intl.accept_languages:
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
driver = webdriver.Chrome(chrome_options=options)
注意:要在上面使用,您的网站应该也需要支持。
还有另一种方法可以将您的母语页面翻译成英语:
尝试使用以下代码:
prefs = {
"translate_whitelists": {"your native language":"en"},
"translate":{"enabled":"True"}
}
options.add_experimental_option("prefs", prefs)
答案 2 :(得分:1)
试试
chrome_options.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
答案 3 :(得分:0)
所有可用的铬开关(大多数也应适用于铬)可在以下位置找到: https://peter.sh/experiments/chromium-command-line-switches/#lang
我还没有找到-accept-language 作为其中之一,但是-lang = locale 是其中之一。
要使用它,将打开chrome会话的配置文件需要支持它(属于受支持的语言)。
默认情况下不会。只有您的母语会成为其中的一部分。 要添加它,您可以创建新的配置文件
以下代码每个配置文件将使用一种语言。即使--lang = locale在您的个人资料中可以使用时,它也可能会很棘手,因为Chrome UI实施将使用由打开的主/第一个chrome窗口设置的设置。 有关详细说明,请参见@sarjoor答案: How language work across multiple chrome windows
现在创建新的配置文件: How to create a chrome profile
创建个人资料并开始与它的会话后,请转到: chrome:// settings / languages
添加所需的语言。将语言移到列表顶部。
然后,我们需要指定两个配置文件开关:
chrome_options.add_argument('--user-data-dir=profileDirectory')
chrome_options.add_argument('--profile-directory="yourProfileName))
您的个人资料目录和名称可以通过以下网址找到: chrome://版本
在macOS上,它位于:
配置文件路径/用户/自动/库/应用程序支持/ Google / Chrome /配置文件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)
答案 4 :(得分:0)
对于该特定网站,您可以使用get参数,请尝试用以下方式替换第一个链接:
link = 'https://play.google.com/store?hl=en'
在这种情况下应该可以解决您的问题。
许多Google网站都具有这种功能。