#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()")