我早些时候发布了这个问题,很抱歉重新发布,但我无法弄清楚为什么代码适用于回答的人而不是我。
使用python selenium键入文本后如何从搜索建议中获取值?
我将重新输入问题并使用他发布的代码进行更新。
当您在https://finance.yahoo.com/的搜索栏中输入苹果等内容时,会出现一个搜索建议菜单。
我试图让它返回该下拉框中值的列表、字典或数据框。
例如
{'AAPL':['Apple Inc.','Equity - NMS','https://finance.yahoo.com/quote/AAPL?p=AAPL&.tsrc=fin-srch'],
'AAPL.BA':['Apple Inc.','Equity - BUE','https://finance.yahoo.com/quote/AAPL.BA?p=AAPL.BA&.tsrc=fin-srch'],
.....}
或者
['AAPL','Apple Inc.','Equity - NMS','https://finance.yahoo.com/quote/AAPL?p=AAPL&.tsrc=fin-srch']
['APPL.BA','Apple Inc.','Equity - BUE','https://finance.yahoo.com/quote/AAPL.BA?p=AAPL.BA&.tsrc=fin-srch']
最后一个值是单击链接后的超链接。
之前有人在下面发布了此代码,
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import time
import pandas as pd
options=webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome(executable_path=r'C:\Program Files\chromedriver\chromedriver.exe',options=options)
url = "https://finance.yahoo.com/"
driver.get(url)
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="yfin-usr-qry"]'))).send_keys('apple')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div//*[contains(text(),'Symbols')]")))
web_elem_list = driver.find_elements_by_xpath(".//div[@data-test='search-assist-input-sugglst']/div/ul[1]/li/div")
results = pd.DataFrame()
for web_elem in web_elem_list:
suggests=[]
suggests.append(web_elem.find_element_by_xpath("./div/div").text)
suggests.append(web_elem.find_element_by_xpath("./div/div/following-sibling::div").text)
suggests.append(web_elem.find_element_by_xpath("./div/following-sibling::div").text)
results=results.append(pd.Series(suggests),ignore_index=True)
print(results)
driver.close()
但不断在列表中获取空白值。我不明白为什么,发布的人说代码对他有用,但我尝试了我能想到的一切来解决问题。我认为元素的 xpath 可能不正确。
有人有什么主意吗?