不了解驱动程序如何无法定位元素

Not understanding how driver unable to locate element

这是网站:https://seekingalpha.com/news/3580581-docusign-eps-beats-0_02-beats-on-revenue

我正在尝试通过网络抓取 EPS、EPS 节拍、GEPS GEPS 节拍和收入收入节拍。

List1 = driver.find_element_by_xpath("""/html/body/div[2]/div[1]/div/main/div[2]/div[3]/div[2]/section[1]/div/div/div[3]/div/div/div[1]/ul/li[1]/text()[2]""")

此 returns 无法定位元素。

这也行不通

List1 = driver.find_element_by_xpath("""/html/body/div[2]/div[1]/div/main/div[2]/div[3]/div[2]/section[1]/div/div/div[3]""")

我不认为这是因为正在加载网站。我把 time.sleep 设置为 10 秒,它也没有用。我不确定如何浏览网站以找到包含我想要的信息的列表。

很奇怪的问题。我能够使用以下代码获取数据:

driver = webdriver.Chrome(path_to_chrome_driver)
driver.get("https://seekingalpha.com/news/3580581-docusign-eps-beats-0_02-beats-on-revenue")
time.sleep(40)
driver.execute_script("window.scrollTo(0, 400)") 
time.sleep(20)
data = driver.find_elements_by_xpath('/html/body/div[2]/div[1]/div/main/div[2]/div[3]/div/section[1]/div/div/div[3]/div/div/div[1]/ul/li[1]')
for dat in data:
    print(dat.text)

除非用户进行一些滚动操作(可能出于优化目的),否则页面似乎无法完全加载。希望这对你也有用!

要打印所需的文本,您必须诱导 for the visibility_of_element_located() and you can use either of the following :

  • 打印 DocuSign(纳斯达克股票代码:DOCU):第一季度非 GAAP 每股收益为 0.12 美元,比 0.02 美元高; GAAP 每股收益 - 0.26 美元,低于 0.03 美元。:

    driver.get('https://seekingalpha.com/news/3580581-docusign-eps-beats-0_02-beats-on-revenue')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li"))).text)
    
  • 打印 Q1 非 GAAP 每股收益 0.12 美元

    print(driver.execute_script('return arguments[0].childNodes[2].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 打印 节拍 $0.02:

    print(driver.execute_script('return arguments[0].childNodes[3].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 打印 GAAP 每股收益 -$0.26

    print(driver.execute_script('return arguments[0].childNodes[4].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 打印未命中 0.03 美元

    print(driver.execute_script('return arguments[0].childNodes[5].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC