Comment web gratter ordre des frappeurs MLB pour exceller?

voix
0

Je grattant les files d'attente de baseball et d'importer le code python dans Excel à l'aide pandas géants.

Ce que je cherche:

  1. Enlever les guillemets de noms
  2. Retirez les supports de début et de fin de chaque équipe
  3. Les noms divisés en cellules différentes

Exemple de sortie de courant pour l'équipe 1:

['Daniel Norris', 'Masahiro Tanaka', 'Mikie Mahtook', etc.]

Tous les noms ci-dessus ont des guillemets, des virgules, et les supports qui leur sont rattachés. Ils sont tous répertoriés dans la même cellule, aussi.

Exemple de sortie excel pratique pour l'équipe 1:

Daniel Norris    Masahiro Tanaka    Miki Mahtook    etc.

Comme vous pouvez le voir ci-dessus, je voudrais tous les guillemets, des virgules et des supports supprimés. Aussi, je voudrais tous les noms des joueurs de chaque équipe d'être dans leurs propres cellules respectives.

Je cherchais le bon code en ligne. Jusqu'à présent, je l'ai vu trois exemples sur stackoverflow.com mais ils ont l'air différente de la mienne. Je vais montrer tous les trois. Peut-être l'un de ceux-ci peuvent être utilisés dans ce cas.

Exemple 1 en utilisant la méthode de la chaîne:

s = s.strip(['o','1'])

Exemple 2 en utilisant de remplacer la méthode:

s = s.replace(World, )

Exemple 3 en utilisant de supprimer la méthode:

x = [1,2,3,4,2,2,3]
def remove_values_from_list(the_list, val):
    for i in range(the_list.count(val)):
        the_list.remove(val)

remove_values_from_list(x, 2)

print(x)

Est-il possible de mettre en œuvre l'un de ces codes pour faire les trois éléments que j'énumérés ci-dessus? Sinon, peut-être quelqu'un peut me donner une idée sur la façon de mieux atteindre mes objectifs. J'ai vu certaines personnes suggèrent en ligne un filtre regex. Je ne suis pas au courant de la façon d'utiliser ceux-ci, cependant. Merci d'avance pour votre temps et d'efforts!

Soit dit en passant, je suis tout nouveau au codage et le grattage. Je suis très reconnaissant pour toute aide que je peux recevoir. S'il vous plaît laissez-moi savoir si vous avez des questions ou si je peux ajouter plus de détails pour mieux vous aider.

Voici mon code à ce jour:

from bs4 import BeautifulSoup
import requests
import pandas as pd

url = 'http://www.baseballpress.com/lineups'

soup = BeautifulSoup(requests.get(url).text, 'html.parser')

all_games = []

for g in soup.find_all(class_=game):
    players = g.find_all('a', class_='player-link')
    game = {
        'players': [_.text for _ in g.find_all('a', class_='player-link')],
    }
    all_games.append(game)

print(all_games) 

df = pd.DataFrame.from_dict(all_games)
writer = pd.ExcelWriter('batting lineup.xlsx')
df.to_excel(writer, 'baseball_sheet')
writer.save()
Créé 02/09/2018 à 05:28
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Si vous voulez gratter pour exceller Je recommande d'utiliser des fichiers CSV ( au lieu de les XLSX). Ils sont beaucoup plus faciles à gérer et générer et de le faire, vous pouvez utiliser le csv module intégré.

Voici un exemple revisité de votre code.

from bs4 import BeautifulSoup
import requests
import csv

url = 'http://www.baseballpress.com/lineups'

soup = BeautifulSoup(requests.get(url).text, 'html.parser')

all_games = []

for g in soup.find_all(class_="game"):
    players = g.find_all('a', class_='player-link')
    game = [_.text for _ in g.find_all('a', class_='player-link')]
    all_games.append(game)

with open('players.csv', 'w', newline='') as csvfile:
    player_writer = csv.writer(csvfile)
    player_writer.writerows(all_games)
Créé 02/09/2018 à 08:21
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more