BeautifulSoup4 извлекает несколько данных из тегов TD в TR - PullRequest
0 голосов
/ 26 марта 2020

Использование Beautifulsou 4 для очистки таблицы HTML.

Чтобы отобразить значения из одной из строк таблицы и удалить все пустые поля td. Скопированный источник разделяет классы = ''

Так есть ли способ получить данные из одной строки? используя

data-name ="Georgia" в источнике html ниже

Использование: beautifulsoup4

Текущий код

 import bs4 as bs from urllib.request import FancyURLopener

class MyOpener(FancyURLopener):
    version = 'My new User-Agent'   # Set this to a string you want for your user agent

myopener = MyOpener()
sauce = myopener.open('')
soup = bs.BeautifulSoup(sauce,'lxml')

#table = soupe.table
table = soup.find('table')
table_rows = table.find_all_next('tr')

for tr in table_rows:
    td = tr.find_all('td')
    row = [i.text for i in td]
    print(row)

HTML ИСТОЧНИК

        <tr>
          <td class="text--gray">

            <span class="save-button" data-status="unselected" data-type="country" data-name="Kazakhstan">&#9733;</span>

            Kazakhstan
          </td>

          <td class="text--green">
            81
          </td>

          <td class="text--green">
            9
          </td>

          <td class="text--green">
            12.5
          </td>

          <td class="text--red">
            0
          </td>
          <td class="text--red">
            0
          </td>
          <td class="text--red">
            0
          </td>
          <td class="text--blue">
            0
          </td>
          <td class="text--yellow">
            0
          </td>
        </tr>







        <tr>
          <td class="text--gray">

            <span class="save-button" data-status="unselected" data-type="country" data-name="Georgia">&#9733;</span>

            Georgia
          </td>

          <td class="text--green">
            75
          </td>

          <td class="text--green">
            0
          </td>

          <td class="text--green">
            0
          </td>

          <td class="text--red">
            0
          </td>
          <td class="text--red">
            0
          </td>
          <td class="text--red">
            0
          </td>
          <td class="text--blue">
            10
          </td>
          <td class="text--yellow">
            1
          </td>
        </tr>

1 Ответ

0 голосов
/ 27 марта 2020

Вы говорите о чем-то вроде:

tr.find_all('td',{'data-name' : True})

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

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