我是Python新手,可以使用一些帮助。本质上,我试图从曲棍球联赛网站上抓取代码,以便可以将其拉入Excel,以查看我部门中的所有团队是否都具有相同数量的延迟时间。
我写了一些代码来刮除该部门每个团队的比赛。有10支球队,每支球队有16场比赛,因此应该有160个结果。条目以某种方式被重复,我得到了320条结果。
我认为这是因为我正在尝试将团队名称附加到一个数组,该数组用于保存在将其写入Pandas DataFrame之前抓取的已解析数据。当我删除代码以将名称添加到数组中的数据集时,我得到了预期的结果数(160),但是我的数据集没有与每个游戏关联的团队名称。
我知道我可以删除重复的数据,但是我试图理解为什么我得到了这些重复的数据,以及如何修复代码来避免这种情况。非常感谢您的帮助。
import requests
from bs4 import BeautifulSoup
import numpy as np
import pandas as pd
#define list of teams
teamIDs = np.array([[11954, "A Warthog"], [11945, "Blast"], [11951, "Cobra Kai"], [11947, "Homer's Heroes"], [11946, "Hudson Dusters"], [11952, "Le National"], [11948, "Les Boys"], [11953, "Molar Bears"], [11949, "NYAC"], [11950, "Top Shelf"]])
#define dataframe to store data
df = pd.DataFrame(columns=['date','day','time', 'teamname'])
#loop through team pages based on teamIDs stored in array to scrape data
for num in range(len(teamIDs)):
r = requests.get('https://apps.dashplatform.com/dash/index.php?Action=team/index&company=chelsea&teamid={}'.format(teamIDs[num][0]))
soup = BeautifulSoup(r.text, 'lxml')
#loop through all game entries on the page and add them to the dataframe
for li in soup.find_all('li'):
try:
#find <li> tags with specific class that holds data points as a string
gameentry = li.find('h4', class_='list-group-item-heading').text
#split string apart and assign to array
games = gameentry.split()
#add team name to array
games.append(teamIDs[num][1])
#add result to the dataframe
df.loc[df.shape[0]] = games
except AttributeError:
continue
#output dataframe to excel file
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
答案 0 :(得分:0)
我得到160个结果。请再次重新检查。在另一个主题上,我对您的脚本做了一些更改,使其看起来很简单。您无需在单个页面上使用Excelwriter。
vecsets::vsetdiff(x, y)
#[1] 1 3 8
vecsets::vsetdiff(x, z)
#[1] 1 5 7
vecsets::vsetdiff(x, c(5, 7))
#[1] 1 3 3 8