Selenium находит элемент по имени класса

#python #selenium #web-scraping #classname

#python #селен #веб-очистка #имя_класса

Вопрос:

Я бы соскреб с этой страницы цели и красные карточки каждой команды. Это URL: https://www.flashscore.com/match/6DavxcEF/#match-summary

Я пытался использовать эту часть кода

 try:
    driver.find_element_by_xpath("//*[@id='summary-content']/div[1]")
    goals=driver.find_element_by_class_name("icon soccer-ball").text
    card1 = driver.find_element_by_class_name("icon yr-card").text
    card2 = driver.find_element_by_class_name("icon r-card").text
 except NoSuchElementException:
    goals = " "
    card1 = " "
    card2 = " "
 

Кто-нибудь может мне помочь?
Спасибо

Комментарии:

1. можете ли вы опубликовать ожидаемый / полученный результат и / или какие-либо трассировки? вопрос не ясен, потому что мы не знаем проблемы

2. вы должны использовать requests модуль для извлечения данных с сайтов.

3. @LeonardoScotti Я отредактировал код, и у меня есть пустой результат в качестве возврата, ошибок нет.

Ответ №1:

Когда я проверяю элементы, внутренняя часть тегов span в имени класса значка y-card пуста. Я решил проблему следующим образом.

 md = driver.find_elements_by_class_name("detailMS__incidentRow")

for i in md:
    if i.find_elements_by_class_name("icon.y-card"):
        print(i.text)

 

Таким образом, карты и т. Д. Вы можете получить доступ к своим данным. С incidentRow-away incidentRow-home помощью имен классов или вы можете получить доступ только к данным домашней или выездной команды. Будьте осторожны, вы должны использовать find_elements , а не find_element , поскольку в таких выборках в тегах будет несколько данных.

В приведенном мной примере вы можете получить доступ только к данным желтой карточки. Наконец, когда вы указываете более одного имени класса, поставьте точку (.) Между ними.

Комментарии:

1. Отлично, что это работает, я бы добавил минуту этих элементов в каждый столбец. Это возможно?

2. Вы можете найти его по имени класса тега span, в котором находится минута. i.find_element_by_class_name("time-box-wide") . я не пробовал это, но надеюсь, что это сработает 🙂