Очистка страницы результатов школьного футбола. Как удалить \ n \ t из фрейма данных, а также объединить несколько bs4.element.ResultSet? - PullRequest
0 голосов
/ 04 ноября 2019

Текущий проект ... новичком в Python !! Я создал 4 "класса 'bs4.element.ResultSet" под названием игры (выигрыши), розыгрыши, связи и обычаи со школьного веб-сайта. Я помогаю лиге, собирая все школьные оценки и агрегируя. Я не могу понять, как объединить эти 4 element.resultsets, чтобы я мог запустить остальную часть программы. Прямо сейчас он только сохраняет «игры (выигрыши)» в таблицу Excel. Также в выводе ниже есть тонна пробелов - как я могу избавиться от этих \ n \ t ?? Большое спасибо заранее за вашу помощь.

from bs4 import BeautifulSoup as bs
import requests
import pandas as pd
import re

url = 'https://www.loomischaffee.org/athletics/teams/fall/soccer-boys/varsity'
page = requests.get(url)
soup = bs(page.content, 'html.parser') 

week = soup.find(id='fsEl_5138')

games = week.find_all(class_ ='fsResultWin')
draws = week.find_all(class_ ='fsResultTie')
ties = week.find_all(class_ ='fsResultLoss')
custom = week.find_all(class_ ='fsResultCustom')

# now creating 6 lists of the data contained in the above. 
date = [games.find(class_ = 'fsDate').get_text() for games in games]
time = [games.find(class_ = 'fsTime').get_text() for games in games]
opponent = [games.find(class_ = 'fsAthleticsOpponentName').get_text() for games in games]
home_away = [games.find(class_ = 'fsAthleticsAdvantage').get_text() for games in games]
location = [games.find(class_ = 'fsAthleticsLocations').get_text() for games in games]
result = [games.find(class_ = 'fsAthleticsResult').get_text() for games in games]
score = [games.find(class_ = 'fsAthleticsScore').get_text() for games in games]

# now I turn data into a table using pandas so I can manipulate

results = pd.DataFrame(
        {'Date': date,
         'Time': time,
         'Opponent': opponent,
         'Home/Away': home_away,
         'Location' : location,
         'Result': result,
         'Score': score,
         })

print(results)
results.to_excel('results.xls')

1 Ответ

0 голосов
/ 04 ноября 2019

Когда вы пишете .get_text(), вы можете использовать .get_text().strip() для удаления пробелов.

Вы храните несколько столбцов, которые могут работать достаточно хорошо, вы можете объединить их с zip(x, y) если нужно. Но вам может быть удобнее попросить BeautifulSoup найти таблицу, а затем find_all('tr') внутри таблицы, то есть выполнить итерацию по строкам.

Рассмотрим представление (часть) строки таблицы следующим образом:

row = dict(opponent='vs. Northfield Mt. Hermon',
           advantage='Home',
           score='1-1')

Если у вас есть объект tr, строка таблицы, вы можете легко найти эти значения.

Имея это в виду, вы можете представить всю таблицу в виде списка строк,каждая строка представляет собой dict.

Затем выведите строки в электронную таблицу, как вы это делали. Или $ pip install pandas и вы можете сделать :

rows = read_html_table_rows()
df = pandas.Dataframe(rows)
df.to_excel('results.xls')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...