不了解驱动程序如何无法定位元素
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
这是网站: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)
除非用户进行一些滚动操作(可能出于优化目的),否则页面似乎无法完全加载。希望这对你也有用!
要打印所需的文本,您必须诱导 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