我如何提取整个表格并将其存储在CSV文件中

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

我正在尝试删除整个表,并希望将其存储在.csv文件中。当我尝试删除此数据时,它显示为“未找到表”错误。

from pandas.io.html import read_html
page = 'https://games.crossfit.com/leaderboard/open/2020?view=0&division=1&scaled=0&sort=0'

tables = read_html(page,  attrs={"class":"desktop athletes"})

print ("Extracted {num} tables".format(num=len(tables)))
python csv web-scraping screen-scraping extraction
1个回答
0
投票

此页面使用JavaScript从服务器获取数据并生成表。

但是在Chrome / Firefox中使用DevTool,您可以看到(在Network选项卡中)从浏览器到服务器的所有请求,并且XHR/AJAX请求之一以JSON格式获取所有数据,因此您可以使用此网址也可以将其作为JSON获得,您可以将其转换为Python数据,而不必将其刮取。

import requests

r = requests.get('https://games.crossfit.com/competitions/api/v1/competitions/open/2020/leaderboards?view=0&division=1&scaled=0&sort=0')

data = r.json()

for row in data['leaderboardRows']:
    print(row['entrant']['competitorName'], row['overallScore'], [(x['rank'],x['scoreDisplay']) for x in row['scores']])

结果

Patrick Vellner 64 [('13', '8:38'), ('19', '988 reps'), ('12', '6:29'), ('18', '16:29'), ('2', '10:09')]
Mathew Fraser 74 [('8', '8:28'), ('40', '959 reps'), ('3', '6:08'), ('2', '14:22'), ('21', '10:45')]
Lefteris Theofanidis 94 [('1', '8:05'), ('3', '1021 reps'), ('13', '6:32'), ('4', '15:00'), ('73', '11:11')]
# ... more ...
© www.soinside.com 2019 - 2024. All rights reserved.