Используя BeautifulSoup, я пытаюсь очистить некоторые спортивные результаты.
from urllib.request import urlopen as uReq
import bs4
from bs4 import BeautifulSoup as soup
import pandas as pd
my_url = 'http://www.ufcstats.com/fight-details/e9eab0fa03eecd9b'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html,'html.parser')
f_details = page_soup.find('div', class_='b-fight-details__content' )
f_details_inside = f_details.findAll('i')
s1 = list()
for item in f_details_inside:
s1.append(item.text)
print(s1)
Теперь он у меня в списке, который выглядит примерно так. Мне нужны не все элементы в этом списке, а только те, которые имеют определенные порядковые номера.
['\n\n Method:\n\n \n Decision - Unanimous \n', '\n Method:\n\n ', ' Decision - Unanimous ', '\n\n Round:\n \n 5\n ', '\n Round:\n ', '\n\n Time:\n \n \n 5:00\n\n ', '\n Time:\n ', '\n\n Time format:\n \n 5 Rnd (5-5-5-5-5)\n ', '\n Time format:\n ', '\n\n Referee:\n \n\n Herb Dean\n \n', '\n Referee:\n ', '\n\n Details:\n \n', '\n Details:\n ', "\nSal D'amato \n\n \n \n 44 - 50.\n ", '\nDerek Cleary \n\n \n \n 44 - 50.\n ', '\nEric Colon \n\n \n \n 45 - 50.\n ']
Я создал словарь с именами столбцов по моему выбору, которые совпадают с индексами s1, которые я хочу собрать из приведенного выше списка.
col_to_str_dict = {'Method':'0','Decision':'2','Round':'3', 'Time':'5','Timeformat':'7','Referee':'9','Judge1':'13','Judge2':'14','Judge3':'15' }
Я создал пустой фрейм данных где я хочу сохранить информацию из приведенного выше списка.
test_df = pd.DataFrame(columns=['Method', 'Decision', 'Round', 'Time', 'Timeformat', 'Referee', 'Judge1', 'Judge2', 'Judge3'])
Я хотел oop по элементам в словаре, чтобы хранить соответствующие данные в соответствующих столбцах моего фрейма данных, но он не работает .
for key, values in col_to_str_dict.items():
print(key)
print(values)
test_df[key] = s1[int(values)]
Но я не могу присвоить значения фрейму данных. В конце концов, я хочу создать этот набор данных для множества боев ММА.