Python : 如何使用 Selenium find_element_by_css_selector

Python : How to use find_element_by_css_selector using Selenium

我正在尝试抓取新闻评论。我想从这个蓝线 HTML 代码

中抓取文本“72”

所以,这是我的代码

per_male = driver.find_element_by_css_selector('div.u_cbox_chart_progress u_cbox_chart_male > 
           span.u_cbox_chart_per')
print('per_male : ' + per_male.get_attribute('text'))

但是我有这个错误

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"div.u_cbox_chart_progress u_cbox_chart_male > span.u_cbox_chart_per"}
  (Session info: chrome=83.0.4103.97)

我也用这个码

per_male = driver.find_element_by_css_selector('div.u_cbox_chart_progress u_cbox_chart_male > 
           span.u_cbox_chart_per')
print('per_male : ' + per_male.text)

但是我有同样的错误,我该如何解决这个问题?

谢谢。

要抓取文本 72,您必须为 visibility_of_element_located() 引入 ,您可以使用以下任一解决方案:

  • 使用CSS_SELECTOR:

    print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.u_cbox_chart_progress.u_cbox_chart_male>div.u_cbox_chart_per"))).text)
    
  • 使用XPATH:

    print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='u_cbox_chart_progress u_cbox_chart_male']/div[@class='u_cbox_chart_per']"))).text)
    
  • 注意:您必须添加以下导入:

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

参考

您可以在 中找到一些相关讨论: