gpt4 book ai didi

python - Amazon Ubuntu Server (EC2) 上的 Selenium 未打开某些链接,但在本地计算机上运行良好

转载 作者:行者123 更新时间:2023-12-04 18:49:36 25 4
gpt4 key购买 nike

我正在使用 Selenium 在服务器上打开某个网站(例如 YouTube),但它似乎无法打开该网站。但是,该代码适用于不同的网站。此代码在我的本地 PC 上也可以正常工作,没有任何问题。
我不知道我的 Chrome 驱动程序或 Selenium 是否有问题,但它无法打开 youtube.com,因为它只输出:“获取网站之前”,仅此而已。没有显示异常/错误,但脚本仍在运行,我必须手动结束它。
为什么 Selenium 不能在服务器上打开某些 URL,但它在我的 PC 上可以正常工作?

options = webdriver.ChromeOptions()
options.add_argument("no-sandbox")
options.add_argument('--headless')
options.add_argument("--start-maximized")
PATH = "./chromedriver"
global driver
driver = webdriver.Chrome(PATH, chrome_options=options)

print("Before getting the website")
driver.get("https://youtube.com")
print("opened", driver.current_url)

最佳答案

我有一个完全相同的问题。也许我不知道为什么会这样。
注意:
当您在没有 GUI 的情况下在 Ubuntu ec2 上进行抓取工作时,您必须为 chrome 提供一些 GUI 界面才能运行,而 Xvfb 解决了它。
“Xvfb(X 虚拟帧缓冲区的缩写)是一个用于类 UNIX 操作系统(例如 Linux)的内存显示服务器。它使您能够在没有显示的情况下运行图形应用程序(例如,在 CI 服务器上进行浏览器测试),同时还具有截取屏幕截图的能力。”
解决方案

  • 为 ubuntu 安装 Xvfb:sudo apt install xvfb
  • 现在执行你的脚本:xvfb-run python[version] script.py

  • 重要提示:
    如果您的程序在初始化期间卡住并没有显示任何输出,请确保您没有添加 chrome_option.add_argument("disable-dev-shm-usage") .
    如果在您的 chrome header 中添加此参数,那么它将禁用/dev/shm。不确定,但它是一些共享内存,xvfb 是我认为需要它的内存显示服务器。
    这对我有用。

    关于python - Amazon Ubuntu Server (EC2) 上的 Selenium 未打开某些链接,但在本地计算机上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63383407/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com