如何使用selenium按类刮取文本?错误消息:指定的选择器无效或非法

ctzwtxfj  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(268)

我正在尝试编写一个程序,使用python上的selenium从yahoo finance中获取有关股票的信息。但我一直在犯这样的错误:
selenium.common.exceptions.invalidselectorexception:消息:无效选择器:指定的选择器无效或非法
我会通过id查找,但在html的这一部分中没有id,我已经包含了一张照片供参考。这里几乎只有班级。我尝试了许多html类,但它们都给了我相同的错误。我不认为这是因为它没有加载,因为我放了一个时间。提前睡觉以确保它加载。如果有人能帮助我,我将不胜感激。
这是我的密码:

WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'yfin-usr-qry')))
    input1 = browser.find_element_by_id('yfin-usr-qry')
    input1.send_keys(self.stockslist[0])
    input1.send_keys(Keys.ENTER)
    time.sleep(5)
    stockinfo = browser.find_element_by_class_name('Mend(20px)')
    print(stockinfo.text)
    time.sleep(10)
    browser.quit()

这里有一个链接,指向我正试图抓取的文本的html

m4pnthwp

m4pnthwp1#

你可以用 xpath 选择并提取文本。请参考下面的代码。

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

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")

driver = webdriver.Chrome(options=options)
driver.get('https://in.finance.yahoo.com/quote/NIO?p=NIO&.tsrc=fin-srch')

wait = WebDriverWait(driver, 30)

# Search element and print text

Stock_Price = wait.until(EC.presence_of_element_located(
    (By.XPATH, '(//div[@id="quote-header-info"]/div[3]/descendant::span)[1]')))
print(Stock_Price.text)

如果您有任何疑问,请告诉我。谢谢

相关问题