如何网上刮MLB击球顺序优秀?

问题描述 投票:1回答:1

我正在使用pandas抓取棒球阵容并将python代码导入excel。

我在找什么:

  1. 从名称中删除引号
  2. 从每个团队的开始和结束中删除括号
  3. 将名称拆分为不同的单元格

第1组的当前输出示例:

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

所有上述名称都附有引号,逗号和括号。它们也都列在同一个单元格中。

第1组的首选excel输出示例:

Daniel Norris    Masahiro Tanaka    Miki Mahtook    etc.

如您所见,我希望删除所有的引号,逗号和括号。另外,我希望每支队伍中的所有球员姓名都在各自的单元格中。

我一直在网上寻找合适的代码。到目前为止,我已经在stackoverflow.com上看到了三个例子,但它们看起来与我的不同。我将展示这三个。在这种情况下,也许可以使用其中一种。

示例1使用字符串方法:

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

示例2使用替换方法:

s = s.replace("World", "")

例3使用删除方法:

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)

是否可以实施其中一个代码来完成上面列出的三个项目?如果没有,也许有人可以给我一些关于如何更好地实现我的目标的见解。我在网上看到一些人建议使用正则表达式过滤器。不过,我不知道如何使用它们。提前感谢您的时间和精力!

顺便说一句,我是编码和抓取的新手。我非常感谢能得到的任何帮助。如果您有任何疑问或者我可以添加更多细节以便更好地为您提供帮助,请与我们联系。

到目前为止,这是我的代码:

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()
python regex web-scraping beautifulsoup python-requests
1个回答
0
投票

如果你想要去excel我会建议使用CSV文件(而不是XLSX文件)。它们更容易管理和生成,为此,您可以使用csv内置模块。

以下是您重新访问的代码示例。

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)
© www.soinside.com 2019 - 2024. All rights reserved.