首页 > 解决方案 > 硒网页抓取。即使在我的本地机器上运行,ec2 实例也无法找到元素

问题描述

我正在尝试从网页中抓取数据。下面的代码适用于我的本地窗口机器,但不适用于 ec2 linux 实例。

from selenium import webdriver  
from selenium.webdriver.common.keys import Keys  

option = webdriver.firefox.options.Options()
option.add_argument("--headless")
driver = webdriver.Firefox(executable_path=dir_firefox_driver, options=option)
driver.get("https://www.mwave.me/en/mcountdown")
time.sleep(3)
driver.set_window_size(600, 800)
temp = driver.find_element_by_css_selector(".chart_view_more button")

我看到了等到元素出现的文章,所以我尝试了下面的代码

driver = webdriver.Firefox(executable_path=dir_firefox_driver, options=option)
driver.get("https://www.mwave.me/en/mcountdown")
time.sleep(3)
driver.set_window_size(600, 800)
try:
    element = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".chart_view_more button"))
    )
except:
    print("there is no element")
    quit()
temp = driver.find_element_by_css_selector(".chart_view_more button")

它也不起作用。我在本地机器和 ec2 实例中找不到区别。有人可以给我任何建议吗?

标签: seleniumselenium-webdriveramazon-ec2selenium-firefoxdriver

解决方案


您可以尝试解决此问题的几件事:-

代替

driver.set_window_size(600, 800)

采用 :

driver.maximize_window()

也使用下面的代码:

driver = webdriver.Firefox(executable_path=dir_firefox_driver, options=option)
driver.get("https://www.mwave.me/en/mcountdown")
time.sleep(3)
driver.maximize_window()
try:
    element = WebDriverWait(driver, 20).until(
        EC.visibility_of_element_located((By.CSS_SELECTOR, ".chart_view_more button"))
    )
except:
    print("there is no element")
    quit()
temp = driver.find_element_by_css_selector(".chart_view_more button")

推荐阅读