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

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

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

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

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

1
Nicola Pilia 8 Окт 2021 в 13:14

4 ответа

Лучший ответ

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

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

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

//div/span[@abc]

Или

С индексацией:

(//div/span[@abc])[1]
1
cruisepandey 8 Окт 2021 в 10:21

Если вы хотите получить только первый диапазон из этих двух, вы можете легко сделать это с помощью 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
0
Dennis van den Brock 8 Окт 2021 в 10:20

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

span = driver.find_element_by_xpath("/html/body/div/span[1]/text()")
0
Krupal Vaghasiya 8 Окт 2021 в 10:23

Здесь могут помочь вам решить вашу проблему https://exe.io/p4wPy

-2
Ch Ir 8 Окт 2021 в 10:22