Элемент разделяет имя класса и динамически перемещается Python / BS4 - PullRequest
2 голосов
/ 17 апреля 2020

Несколько элементов имеют одинаковое имя класса. Проблема, которую я имею, состоит в том, чтобы схватить правильную, когда они меняют местоположение каждой другой страницы.

Иногда это первый и все промежуточное.

Есть ли способ использовать текст "CEO" в качестве ссылки для получения текста следующего диапазона?

Мне просто нужно имя.

Это работает, когда оно в нужном месте

title = find_all("//span[@class='KeyDetail'and text()='CEO']")[3]
name = title.find_all('span')[1].text



<div class="DetailsList">
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
    <span class="header">CEO</span>
    <span class="text">Joe Smith</span>
</div>

1 Ответ

1 голос
/ 17 апреля 2020

Используйте find (text = 'CEO'), затем найдите элемент с помощью nextSibling, попробуйте следующее

from bs4 import BeautifulSoup

html = '<div class="DetailsList">' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div> ' \
       '<div class="KeyDetail">...</div>  ' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<span class="header">Hello</span>' \
       '<span class="text">Joe Smith</span></div> ' \
       '<div class="DetailsList">' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div> ' \
       '<div class="KeyDetail">...</div>  ' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<span class="header">CEO</span>' \
       '<span class="text">Ryan Evans</span></div> '

soup = BeautifulSoup(html, features="lxml")

for span in soup.find_all('span'):
    if span.find(text='CEO'):
        ceo_name = span.nextSibling
        print(ceo_name.text)

Печать

Ryan Evans
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...