首页 > 解决方案 > Selenium:抓取和打印类

问题描述

这是我第一次使用 Selenium。我以前看过 StackOverflow 中的其他问题,但它们对我没有太大帮助。我想从 https://link 网站“仅”打印文本 Giornata 38 和 Giornata 37。没有内容,只有这两个文本用于说明目的。我指定所有内容仅用于我正在学习 Python 的教育、学习和形成目的。

我究竟做错了什么?网站上的 Python 代码或 html 检查?重要提示:如果我写错了代码并且您修改/改进了它,请记住保留 Firefox,不要用 Chrome 替换它。谢谢

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

browser = webdriver.Firefox()
browser.get('link')

giornata = browser.find_element_by_class_name("event__round event__round--static")
print(giornata)

browser.quit()
display.stop()

错误:引发异常类(消息,屏幕,堆栈跟踪)selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:.event__round event__round--static

标签: pythonpython-3.xpython-2.7seleniumselenium-webdriver

解决方案


该类event__round event__round--static包含一个空格" ",您必须删除该空格并用一个点连接该类.

代替:

giornata = browser.find_element_by_class_name("event__round event__round--static")

尝试:

giornata = browser.find_element_by_class_name("event__round.event__round--static")
print(giornata.text)

根据您的评论,如果您想访问特定元素,例如“Giornata 37”和“Giornata 38”,您可以使用:nth-of-type(n)CSS 选择器,div.event__round:nth-of-type(2)将选择 adiv然后选择第二个 class event__round

在您的示例中:

print(browser.find_element_by_css_selector("div.event__round:nth-of-type(15)").text)
print(browser.find_element_by_css_selector("div.event__round:nth-of-type(2)").text)

输出:

Giornata 37
Giornata 38

推荐阅读