我正在开发一个屏幕抓取工具,以从www.pro-football-reference.com中提取足球统计数据。我目前正在从主要玩家的统计数据页面中进行抓取,然后深入到他们的个人页面,其中包含按年份统计的数据。我能够与我的第一批球员(四分卫,使用传球台)成功地实施这个过程。但是,当我尝试重新创建进程以获取运行数据时,我在数据框中收到了一个附加列,其值为“未命名:x_level_0”。这是我第一次使用 HTML 数据,所以我不确定我错过了哪一部分,我只是假设它与四分卫的代码相同。以下是 QB 代码示例和正确的数据框:import requestsimport urllib.requestimport timefrom bs4 import BeautifulSoupimport pandas as pdfrom pandas import DataFrameimport lxmlimport reimport csvp = 1url = 'https://www.pro-football-reference.com'year = 2020maxp = 300#Passing Datar = requests.get(url+ '/years/' + str(year) + '/passing.htm')soup = BeautifulSoup(r.content, 'html.parser')parsed_table = soup.find_all('table')[0]results = soup.find(id='div_passing')job_elems = results.find_all('tr')df = []LastNameList = []FirstNameList = []for i,row in enumerate(parsed_table.find_all('tr')[2:]): dat = row.find('td', attrs={'data-stat': 'player'}) if dat != None: name = dat.a.get_text() print(name) stub = dat.a.get('href') #pos = row.find('td', attrs={'data-stat': 'fantasy_pos'}).get_text() #print(pos) # grab this players stats tdf = pd.read_html(url + stub)[1] for k,v in tdf.iterrows(): #Scrape 2020 stats, if no 2020 stats move on try: FindYear=re.search(".*2020.*",v['Year']) if FindYear: #If Year for stats is current year append data to dataframe提取此数据的示例 URL 为: https: //www.pro-football-reference.com/players/J/JacoJo01.htm它正在拉动冲刺和接收。在解析 HTML 时,我还需要注意什么吗?我尝试将 index_col = 1 添加到我的 tdf = pd.read_html(url + Stub)[1] 中。然而,这只是将两个值分组到一列中。对此的任何意见将不胜感激。如果我可以提供任何进一步的信息,请告诉我。
添加回答
举报
0/150
提交
取消