BeautifulSoup разбирает таблицу и фильтрует вторые строки - PullRequest
0 голосов
/ 03 июня 2018

Я следовал это и хочу отфильтровать все после br.

Вот пример:

<td class="flightAirport first">Palma de Mallorca<br><span class="second_row">nach Berlin Tegel</span></td>

Что я получаю:> Пальма де Майорканах БерлинТегель <</p>

То, что я пробовал:
Снятие 'nach Berlin Tegel' со строки, дает строку с пропущенными символами, такими как> Пальма де Майор <. </p>

Мой вопрос, как можноЯ избавляюсь от любой второй строки, чтобы не иметь дело с strip ()?

Thx.

Редактировать: replace () дает правильный результат.Но если это возможно отфильтровать, было бы здорово узнать, как это сделать.

1 Ответ

0 голосов
/ 03 июня 2018

Текстовые функции BeautifulSoup включают функцию stripped_strings, которая возвращает генератор всех строк, найденных в супе.Первой строкой этого генератора будет текст перед тегом br.Изменение кода, на который вы ссылались, и его использование для разбора вашего образца HTML:

from bs4 import BeautifulSoup

sample_table = """
<table>
  <tr>
    <td class="flightAirport first">Palma de Mallorca<br><span class="second_row">nach Berlin Tegel</span></td>
    <td class="flightAirport first">LAX</td>
    <td class="flightAirport first"></td>
  </tr>
</table>"""

data = []
soup = BeautifulSoup(sample_table, 'html.parser')
table = soup.find("table")
for row in table.findAll("tr"):
    cols = [ e.stripped_strings.next() for e in row.find_all('td') if len(e.text)]
    data.append([e for e in cols if e])

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