如何以Web方式刮擦MLB击球顺序才能出类拔萃?

时间:2018-09-02 05:28:20

标签: python regex web-scraping beautifulsoup python-requests

我正在抓取棒球阵容,并使用熊猫将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()

1 个答案:

答案 0 :(得分:0)

如果您想抓取卓越,我建议您使用CSV文件(而不是XLSX文件)。它们更易于管理和生成,而您可以使用csv内置模块。

这是您的代码示例。

props: ['name'],
computed: {
  localizedName: function () {
    return this.name.trim()
  }
}