2017-10-04 2 views
1
date = '2017-08-04' 
writer = pd.ExcelWriter('MLB Daily Data.xlsx') 

url_4 = 'http://www.baseballpress.com/lineups/'+date 
resp_4 = requests.get(url_4) 
soup_4 = BeautifulSoup(resp_4.text, "lxml") 
lineups = soup_4.findAll('div', attrs = {'class': 'players'},limit=None) 

row_lineup = 0 
for lineup in lineups: 
    lineup1 = lineup.prettify() 
    lineup2 = lineup1.replace('>'&&'<',',') 
    df4 = pd.DataFrame(eval(lineup2)) 
    df4.to_excel(writer, sheet_name='Starting Lineups', startrow=row_lineups, startcol=0) 
    row_lineups = row_lineups + len(df.index) + 3 
writer.save() 

Je suis en train d'obtenir les files d'attente à partir de la page Web, le convertir eux dans une trame de données de pandas géants, puis enregistrez-le dans un fichier Excel. J'ai un problème avec le transformer en un cadre de données. J'ai remplacé les parenthèses par des virgules parce que j'ai pensé que cela le transformerait en format csv.Tirer contenu des balises div avec beautifulsoup et la création d'une trame de données de pandas géants

+0

Ce fut ma meilleure estimation! –

+0

Vous devez mettre plus d'effort votre contenu de div dans l'entrée de données appropriées (comme python dict, liste, etc) maintenant vous avez seulement une chaîne. essayer de déboguer \ sortie dans la console – SAZ

Répondre

0

Cela peut vous faire bouger dans la bonne direction, où chaque ligne est une ligne jusqu'à

data = [[x.text for x in y.findAll('a')] for y in lineups] 

df = pd.DataFrame(data) 
+0

C'était parfait! Je viens de changer le 'a' en 'div' afin que je puisse obtenir la position et le côté droit. Je suis nouveau sur python alors des trucs comme [[x.text for x in y.findAll ('a')] pour y dans lineups] Je ne penserais pas à me faire. Je vous remercie! –

+0

Content de vous aider! Au cas où vous ne saviez pas ceci est appelé la compréhension de la liste, et peut être utile pour créer des listes vs boucle typique avec append. – DJK

+0

Il semble être un outil utile à avoir. Serait-il compatible avec les balises div de différentes classes? J'ai BeatifulSoup également gratter la balise div "team-name" avec les alignements, qui a bien fonctionné et produit toutes les balises dont j'ai besoin, mais quand j'ai couru ce même code pour le transformer en une liste les alignements ont été importés bien mais Les noms d'équipes ont été importés en tant qu'espaces vides. –