Найдите ближайшего брата тд, который содержит конкретный текст, и сохраните его в переменной - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть эта таблица, которую я пытаюсь очистить с помощью Python / Beautiful Soup.

Также у меня есть этот код:

desc_seven = page_soup.find.nextSibling('strong', text='Description 7')
print(desc_seven.text.strip())

То, что я пытаюсь сделать, это НАЙТИ текст "Описание 7", затем перейдите к тексту рядом с ним и сохраните его в переменной, чтобы я мог легко print его.

Выходные данные должны быть "ЧЧЧ" если я сделаю print(desc_seven.text.strip()).

Мой код не работает, говоря, что нет атрибута "nextSibling".Кроме того, возможно ли сделать это без использования каких-либо (для) циклов, потому что я соберу несколько td и сохраню их в переменной по отдельности.

<table>
  <tr>
    <td><strong>Description 1</strong></td>
    <td>AAA</td>
    <td><strong>Description 11</strong></td>
    <td>LLL</td>
  </tr>
  <tr>
    <td><strong>Description 2</strong></td>
    <td>BBB</td>
    <td><strong>Description 12</strong></td>
    <td>MMM</td>
  </tr>
  <tr>
    <td><strong>Description 3</strong></td>
    <td>CCC</td>
    <td><strong>Description 13</strong></td>
    <td>NNN</td>
  </tr>
  <tr>
    <td><strong>Description 4</strong></td>
    <td>EEE</td>
    <td><strong>Description 14</strong></td>
    <td>OOO</td>
  </tr>
  <tr>
    <td><strong>Description 5</strong></td>
    <td>FFF</td>
    <td><strong>Description 15</strong></td>
    <td>PPP</td>
  </tr>
  <tr>
    <td><strong>Description 6</strong></td>
    <td>GGG</td>
    <td><strong>Description 16</strong></td>
    <td>QQQ</td>
  </tr>
  <tr>
    <td><strong>Description 7</strong></td>
    <td>HHH</td>
    <td><strong>Description 17</strong></td>
    <td>RRR</td>
  </tr>
  <tr>
    <td><strong>Description 8</strong></td>
    <td>III</td>
    <td><strong>Description 18</strong></td>
    <td>SSS</td>
  </tr>
  <tr>
    <td><strong>Description 9</strong></td>
    <td>JJJ</td>
    <td><strong>Description 19</strong></td>
    <td>TTT</td>
  </tr>
  <tr>
    <td><strong>Description 10</strong></td>
    <td>KKK</td>
    <td><strong>Description 20</strong></td>
    <td>UUU</td>
  </tr>
</table>

Благодарим Вас за помощь.Спасибо!

1 Ответ

0 голосов
/ 15 сентября 2018

Что вы можете сделать, это использовать find_next() после того, как нашли «сильный» элемент:

soup = BeautifulSoup(html, 'html.parser')
strong = soup.find('strong', text='Description 7')
desc_seven = strong.find_next('td')
print(desc_seven.text.strip())

Выходы:

HHH

Вы можете сделать это в одну строку:

desc_seven =  soup.find('strong', text='Description 7').findNext('td').get_text(strip=True)
print(desc_seven)

Выходы:

HHH

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