HTML разбор сортировки - PullRequest
0 голосов
/ 30 апреля 2020

Итак, у меня есть файл HTML, который содержит одну большую таблицу. Как вы можете видеть ниже, первая строка данных содержит заголовки, а остальные строки представляют собой информацию для mov ie.

          <tr class="row0">
            <td class="column0 style0 s">show_id</td>
            <td class="column1 style0 s">type</td>
            <td class="column2 style0 s">title</td>
            <td class="column3 style0 s">director</td>
            <td class="column4 style0 s">cast</td>
            <td class="column5 style0 s">country</td>
            <td class="column6 style0 s">date_added</td>
            <td class="column7 style0 s">release_year</td>
            <td class="column8 style0 s">rating</td>
            <td class="column9 style0 s">duration</td>
            <td class="column10 style0 s">listed_in</td>
            <td class="column11 style0 s">description</td>
          </tr>
          <tr class="row1">
            <td class="column0 style0 n">81145628</td>
            <td class="column1 style0 s">Movie</td>
            <td class="column2 style0 s">Norm of the North: King Sized Adventure</td>
            <td class="column3 style0 s">Richard Finn, Tim Maltby</td>
            <td class="column4 style0 s">Alan Marriott, Andrew Toth, Brian Dobson, Cole Howard, Jennifer Cameron, Jonathan Holmes, Lee Tockar, Lisa Durupt, Maya Kay, Michael Dobson</td>
            <td class="column5 style0 s">United States, India, South Korea, China</td>
            <td class="column6 style0 s">September 9, 2019</td>
            <td class="column7 style0 n">2019</td>
            <td class="column8 style0 s">TV-PG</td>
            <td class="column9 style0 s">90 min</td>
            <td class="column10 style0 s">Children &amp; Family Movies, Comedies</td>
            <td class="column11 style0 s">Before planning an awesome wedding for his grandfather, a polar bear king must take back a stolen artifact from an evil archaeologist first.</td>
#... continue to row100

Я пытаюсь разработать функцию, которая возвращает либо список списков, либо список словарей, чтобы ответить на некоторые вопросы о данных. Мне известна функция get_text () для получения текста, но я не знаю, как реально реализовать остальное. Я очень новичок в python, поэтому любая помощь очень ценится.

1 Ответ

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

Вы можете использовать:

from bs4 import BeautifulSoup as bs

with open("nf_shows.html", encoding="utf-8") as f:
    html = f.read()

soup = bs(html, "html5lib")
table  = soup.find("tbody").find_all("tr")
headers = [x.text.strip() for x in table[0].find_all("td")]

tv_shows = []
for tv_show in table[1:]:
    vals = [x.text.strip() for x in tv_show.find_all("td")]
    tv_dict = dict(zip(headers, vals))
    tv_shows.append(tv_dict)

{'show_id': '81145628', 'type': 'Movie', 'title': 'Norm of the North: King Sized Adventure', 'director': 'Richard Finn, Tim Maltby', 'cast': 'Alan Marriott, Andrew Toth, Brian Dobson, Cole Howard, Jennifer Cameron, Jonathan Holmes, Lee Tockar, Lisa Durupt, Maya Kay, Michael Dobson', 'country': 'United States, India, South Korea, China', 'date_added': 'September 9, 2019', 'release_year': '2019', 'rating': 'TV-PG', 'duration': '90 min', 'listed_in': 'Children & Family Movies, Comedies', 'description': 'Before planning an awesome wedding for his grandfather, a polar bear king must take back a stolen artifact from an evil archaeologist first.'},
...

Демо

...