Вы можете использовать:
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.'},
...
Демо