Проблема с парсингом в Selenium
На сайте есть игрок, и причина, по которой он не может сыграть, в данном случае травма. Если игрока я спарсить могу с помощью: name = driver.find_element("css selector", ".heading__name").text, то что сделать, чтоб достать и его травму, по xpath не получается. Надо чтоб было так: Райан Бертран (Травма колена).
HTML код:
<div class="heading__title">
<div class="heading__name">Райан Бертран</div>
<svg class="heading__absence" onmouseover="if (typeof tt != 'undefined' && tt !== null) { tt.show(this, event); }" onmouseout="if (typeof tt != 'undefined' && tt !== null) { tt.hide(this); }">
<title>Травма колена</title>
<use xlink:href="/res/_fs/image/13_symbols/incident.svg#injury"></use>
</svg>
</div>
Ответы (2 шт):
Если у вас в блоке <svg... текстовый блок только один, то достаточно использовать css selector:
injury = driver.find_element("css selector", ".heading__absence").text
Если нет, то посложнее будет. Так как у элементов svg свое пространство имен, то просто используя .XPATH до них не добраться пространство имен svg.
injury = driver.find_element(By.XPATH, "//div[@class='heading__title']/*[name()='svg']/*[name()='title']").text
Из других ваших вопросов я понял, что речь идёт об этой странице: https://www.soccerstand.com/ru/player/castrovilli-gaetano/ALBpOZPH/
Код:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.soccerstand.com/ru/player/castrovilli-gaetano/ALBpOZPH/")
name = driver.find_element("css selector", ".heading__name").text
injury = driver.find_element(By.CSS_SELECTOR, '.heading__absence title').get_attribute("innerHTML")
print(name, injury)