Застрял в парсинге с BeautifulSoup во время обучения. Нужны некоторые указателиPython

Программы на Python
Ответить
Anonymous
 Застрял в парсинге с BeautifulSoup во время обучения. Нужны некоторые указатели

Сообщение Anonymous »

Я начал изучать очистку экрана с помощью BeautifulSoup. Для начала я взял статью в Википедии следующего формата

Код: Выделить всё




Opening
Title
Director
Cast
Production company
[url=/wiki/Viswam_(film)]Viswam[/url][/i]

Sreenu Vaitla

[*]

[list]
[url=/wiki/Gopichand_(actor)]Gopichand[/url]
[*][url=/wiki/Kavya_Thapar]Kavya Thapar[/url]
[*][url=/wiki/Vennela_Kishore]Vennela Kishore[/url]
[*][url=/wiki/Sunil]Sunil[/url]
[*][url=/wiki/Naresh]Naresh[/url]
[/list]



Chitralayam Studios

People Media Factory



[url=#cite_note-180][178][/url]




31[/b][b]            
[i][url=/wiki/Lucky_Baskhar]Lucky Baskhar[/url][/i]

[url=/wiki/Venky_Atluri]Venky Atluri[/url]

[*]

[list]
[url=/wiki/Dulquer_Salmaan]Dulquer Salmaan[/url]
[*][url=/wiki/Meenakshi_Chaudhary]Meenakshi Chaudhary[/url]
[/list]


[url=/wiki/S._Radha_Krishna]Sithara Entertainments[/url]


[url=#cite_note-181][179][/url]





[i][url=/wiki/Mechanic_Rocky]Mechanic Rocky[/url][/i]

Ravi Teja Mullapudi

[*]

[list]
[url=/wiki/Vishwak_Sen]Vishwak Sen[/url]
[*][url=/wiki/Meenakshi_Chaudhary]Meenakshi Chaudhary[/url]
[/list]


SRT Entertainments


[url=#cite_note-182][180][/url]






N

O

V
[/b][b]            
9[/b][b]            
[i][url=/wiki/Telusu_Kada]Telusu Kada[/url][/i]

[url=/wiki/Neeraja_Kona]Neeraja Kona[/url]

[*]

[list]
[url=/wiki/Siddhu_Jonnalagadda]Siddhu Jonnalagadda[/url]
[*][url=/wiki/Raashii_Khanna]Raashii Khanna[/url]
[*][url=/wiki/Srinidhi_Shetty]Srinidhi Shetty[/url]
[/list]


People Media Factory


[url=#cite_note-183][181][/url]






D

E

C
[/b][b]            
6[/b][b]            
[i][url=/wiki/Pushpa_2:_The_Rule]Pushpa 2: The Rule[/url][/i]

[url=/wiki/Sukumar]Sukumar[/url]

[*]

[list]
[url=/wiki/Allu_Arjun]Allu Arjun[/url]
[*][url=/wiki/Fahadh_Faasil]Fahadh Faasil[/url]
[*][url=/wiki/Rashmika_Mandanna]Rashmika Mandanna[/url]
[/list]


[url=/wiki/Mythri_Movie_Makers]Mythri Movie Makers[/url]


[url=#cite_note-184][182][/url]




20[/b]
[i]Robinhood[/i]
[url=/wiki/Venky_Kudumula]Venky Kudumula[/url]

[*]

[list]
[url=/wiki/Nithiin]Nithiin[/url]
[*][url=/wiki/Sreeleela]Sreeleela[/url]
[/list]


[url=/wiki/Mythri_Movie_Makers]Mythri Movie Makers[/url]


[url=#cite_note-185][183][/url]






Это мой скрипт Python, который я написал:

Код: Выделить всё

soup = BeautifulSoup(html_page, "html.parser")

tables = soup.find_all("table",{"class":"wikitable sortable"})
headers = ['month','day','movie','director','cast','producer','reference']
movie_tables = []
total_movies = 0
for table in tables:
caption = table.find("caption")
if not caption or not caption.get_text().strip():
movie_tables.append(table)

#captions = soup.find_all("caption")

max_columns = len(headers)

# List to store dictionaries
data_dict_list = []

movies= []
for movie_table in movie_tables:
table_rows = movie_table.find("tbody").find_all("tr")[1:]
for table_row in table_rows:
total_movies += 1
columns = table_row.find_all('td')
row_data = [col.get_text(strip=True) for col in columns]
# If the row has fewer columns than the max, pad it with None
if len(row_data) == 6:
row_data.insert(0, None)
elif len(row_data) == 5:
row_data.insert(0, None)
row_data.insert(1, None)
for col in columns:
li_tags = col.find_all('li')
if li_tags:
cast=""
for li in li_tags:
li_values = li.get_text(strip=True)
cast = ', '.join(li_values)

row_data.append(cast)
else:
row_data.append(col.get_text())
# Create a dictionary mapping headers to row data
row_dict = dict(zip(headers, row_data))

# Append the dictionary to the list
data_dict_list.append(row_dict)

# Print the list of dictionaries
for row_dict in data_dict_list:
print(row_dict)
Вот что я получаю (здесь просто показываю несколько элементов):

Код: Выделить всё

{'month': 'OCT', 'day': '11', 'movie': 'Viswam', 'director': 'Sreenu Vaitla', 'cast': 'GopichandKavya ThaparVennela KishoreSunilNaresh', 'producer': 'Chitralayam StudiosPeople Media Factory', 'reference': '[178]'}

{'month': None, 'day': '31', 'movie': 'Lucky Baskhar', 'director': 'Venky Atluri', 'cast': 'Dulquer SalmaanMeenakshi Chaudhary', 'producer': 'Sithara Entertainments', 'reference': '[179]'}

{'month': None, 'day': None, 'movie': 'Mechanic Rocky', 'director': 'Ravi Teja Mullapudi', 'cast': 'Vishwak SenMeenakshi Chaudhary', 'producer': 'SRT Entertainments', 'reference': '[180]'}

{'month': 'NOV', 'day': '9', 'movie': 'Telusu Kada', 'director': 'Neeraja Kona', 'cast': 'Siddhu JonnalagaddaRaashii KhannaSrinidhi Shetty', 'producer': 'People Media Factory', 'reference': '[181]'}

{'month': 'DEC', 'day': '6', 'movie': 'Pushpa 2: The Rule', 'director': 'Sukumar', 'cast': 'Allu ArjunFahadh FaasilRashmika Mandanna', 'producer': 'Mythri Movie Makers', 'reference': '[182]'}

{'month': None, 'day': '20', 'movie': 'Robinhood', 'director': 'Venky Kudumula', 'cast': 'NithiinSreeleela', 'producer': 'Mythri Movie Makers', 'reference': '[183]'}
Вот что я пытаюсь получить (просто показываю здесь последний элемент):

Код: Выделить всё

{'month': 'DEC', 'day': '20', 'movie': 'Robinhood', 'director': 'Venky Kudumula', 'cast': 'Nithiin|Sreeleela', 'producer': 'Mythri Movie Makers', 'reference': '[183]'}
Я пытался отладить это в течение последнего дня или около того, но не могу понять, где я ошибся.
Я ожидаю:
  • месяц и день заполняются во всех элементах, если эти столбцы занимают несколько строк и не представлены во всех строках.
  • Далее я хочу иметь разделитель между различными актерами, чтобы мне было легче позже создать график.
  • Кроме того, как мне извлечь гиперссылки и хранить в отдельном ключе в словаре и при этом все это делать?


Подробнее здесь: https://stackoverflow.com/questions/790 ... e-pointers
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»