Ориентация на атрибуты Xpath в Selenium

#python #html #xml #selenium #web-scraping

Вопрос:

Я использую Селен для очистки веб-страницы, и у меня возникли некоторые проблемы с ориентацией на некоторые атрибуты.

Страница, которую я пытаюсь очистить, выглядит так:

 <div>
    <span abc> content </span>
    <span def> content2 </span>
<div>

 

Моей целью было бы получить текст в теге «span abc», не выбирая другой текст, включенный в тег «span def».

Я перепробовал несколько подходов и просмотрел множество различных ресурсов, но не смог найти правильный подход, так как я не хочу выбирать все области одновременно и не хочу искать на основе текста в тегах.

Ответ №1:

Простым подходом было бы индексирование, потому что вы не хотите выбирать на основе

так как я не хочу выбирать все промежутки одновременно и не хочу выполнять поиск по тексту в тегах.

Если abc является атрибутом, пожалуйста, используйте :

 //div/span[@abc]
 

или

с индексированием :

 (//div/span[@abc])[1]
 

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

1. Спасибо , ваша первая строчка-это именно то, что я искал.

Ответ №2:

Если вы хотите извлечь только первый промежуток из этих двух, вы можете легко сделать это с помощью XPATH. Это выглядело бы так:

 span = driver.find_element_by_xpath("/html/body/div/span[1]").text
 

если вы хотите растянуть каждый промежуток, но можете выполнять команды с каждым из них:

 span = len(driver.find_elements_by_xpath("/html/body/div/span"))
m = 1

while m <= 0:
    span = driver.find_element_by_xpath("/html/body/div/span[" str(m) "]")
    print(span.text)

    m = m   1
 

Ответ №3:

Вы можете использовать xpath, например //span[1]/text() , для получения текста внутри <span> тега

 span = driver.find_element_by_xpath("/html/body/div/span[1]/text()")