Python Beautiful Soup Помогиту удалить "<tr></tr>"

Рейтинг: 0Ответов: 1Опубликовано: 10.05.2023

Вот сам код:

  with open('index.html') as file:
     src = file.read()   
  soup = BeautifulSoup(src, 'lxml')
  tram_schedule = soup.find('div', class_='column working-days').find_all('tr')
  for tram in tram_schedule:
     print(tram)

Получаю вот это:

<tr></tr>
<tr><td>6</td><td class="default-td color-gray"><spam class="">31</spam></td><td class="default-td color-gray"><spam class="">46</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>7</td><td class="default-td color-gray"><spam class="">00</spam></td><td class="default-td color-gray"><spam class="">15</spam></td><td class="default-td color-gray"><spam class="">30</spam></td><td class="default-td color-gray"><spam class="">45</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>8</td><td class="default-td color-gray"><spam class="">00</spam></td><td class="default-td color-gray"><spam class="">15</spam></td><td class="default-td color-gray"><spam class="">30</spam></td><td class="default-td color-gray"><spam class="">43</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>

Помоните удалить эту первую строку <tr></tr>

Ответы

▲ 3Принят
from bs4 import BeautifulSoup

html_code = """<tr></tr>
<tr><td>6</td><td class="default-td color-gray"><spam class="">31</spam></td><td class="default-td color-gray"><spam class="">46</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>7</td><td class="default-td color-gray"><spam class="">00</spam></td><td class="default-td color-gray"><spam class="">15</spam></td><td class="default-td color-gray"><spam class="">30</spam></td><td class="default-td color-gray"><spam class="">45</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>8</td><td class="default-td color-gray"><spam class="">00</spam></td><td class="default-td color-gray"><spam class="">15</spam></td><td class="default-td color-gray"><spam class="">30</spam></td><td class="default-td color-gray"><spam class="">43</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
"""


soup = BeautifulSoup(html_code, 'html.parser')
# tram_schedule = soup.find('div', class_='column working-days').find_all('tr')
for tram in filter(lambda x: x.find('td'), soup.find_all('tr')):
    print(tram)

UPD

Совсем забыл. Вот так еще можно:

for tram in soup.select('tr:has(td)'):
    print(tram)
# тоесть в Вашем случае
# for tram in soup.find('div', class_='column working-days').select('tr:has(td)'):
#     print(tram)

Результат будет одинаковый


<tr><td>6</td><td class="default-td color-gray"><spam class="">31</spam></td><td class="default-td color-gray"><spam class="">46</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>7</td><td class="default-td color-gray"><spam class="">00</spam></td><td class="default-td color-gray"><spam class="">15</spam></td><td class="default-td color-gray"><spam class="">30</spam></td><td class="default-td color-gray"><spam class="">45</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>8</td><td class="default-td color-gray"><spam class="">00</spam></td><td class="default-td color-gray"><spam class="">15</spam></td><td class="default-td color-gray"><spam class="">30</spam></td><td class="default-td color-gray"><spam class="">43</spam></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>