我在装有 Ubuntu 18 的 VPS 中运行 Python 代码。经过多次尝试,我终于能够在那里运行 selenium Chromedriver。现在,我发现网页有时会完全加载,但更多时候,它会打开驱动程序,但页面只会加载,而其中没有 JS。
我不知道是否需要安装其他东西,或者为什么会发生这种情况
Chromium 浏览器版本 84.0.4147 chrome驱动程序版本 84.0.4147
VPS 带有 GUI,我sudo apt-get install xvfb
代码
#stest.py script
url="https://www.bet365.es"
options = webdriver.ChromeOptions()
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-setuid-sandbox')
options.add_argument('--disable-dev-shm-usage')
#This for arguments above, I've tried with and without them. No difference
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
browser=webdriver.Chrome(options=options,executable_path="/usr/bin/chromedriver")
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
browser.execute_cdp_cmd('Network.setUserAgentOverride',
{"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
browser.get(url)
WebDriverWait(browser,10).until(
EC.element_to_be_clickable((By.XPATH,'.//div[contains(@class,"-WebConsoleModule ")]')))
在 bash 脚本中我输入以下内容来运行代码xvfb-run python3 stest.py start
。超时错误发生后,当我检查页面源代码时,我可以看到其中的内容与在常规 Chrome 中按 Ctrl+U 时相同,即未加载 JS 的页面。
根据记录,我得到的结果与传递参数时得到的结果类似--headless
,但对于此页面来说,这不是一个选项,因为它无法正常运行
正如我所说的,我需要每次都完全加载它,而不仅仅是偶尔加载。