我想使用此Web抓取工具创建一个熊猫数据框,以便我可以将数据导出到excel。有人熟悉吗?我在网上和在此站点上看到了不同的方法,但是无法成功地通过此刮板复制结果。
这是到目前为止的代码:
import requests
source = requests.get("https://api.lineups.com/nba/fetch/lineups/gateway").json()
for team in source['data']:
print("\n%s players\n" % team['home_route'].capitalize())
for player in team['home_players']:
print(player['name'])
print("\n%s players\n" % team['away_route'].capitalize())
for player in team['away_players']:
print(player['name'])
该站点似乎有用,但是示例不同:
https://www.tutorialspoint.com/python_pandas/python_pandas_dataframe.htm
这是stackoverflow.com的另一个示例:
Loading web scraping results into Pandas DataFrame
我是编码/抓取的新手,因此非常感谢您的帮助。预先感谢您的时间和精力!
答案 0 :(得分:5)
我添加了一个解决方案,以dataframe
的团队合作方式,希望对您有所帮助。 Updated
代码
import requests
source = requests.get("https://api.lineups.com/nba/fetch/lineups/gateway").json()
players = []
teams = []
for team in source['data']:
print("\n%s players\n" % team['home_route'].capitalize())
teams.append(team['home_route'].capitalize())
teams.append(team['away_route'].capitalize())
temp = []
temp1 = []
for player in team['home_players']:
print(player['name'])
temp.append(player['name'])
print("\n%s players\n" % team['away_route'].capitalize())
for player in team['away_players']:
print(player['name'])
temp1.append(player['name'])
players.append(temp)
players.append(temp1)
import pandas as pd
df = pd.DataFrame(columns=teams)
for i in range(0, len(df.columns)):
df[df.columns[i]] = players[i]
df
要导出为excel,您可以
df.to_excel('result.xlsx')
答案 1 :(得分:1)
Python requests
方便地将json呈现为dict
,因此您可以在pd.DataFrame
构造函数中使用dict。
import pandas as pd
df = pd.DataFrame([dict1, dict2, dict3])
# Do your data processing here
df.to_csv("myfile.csv")
Pandas还具有pd.io.json
以及诸如json_normalize
这样的助手,因此一旦数据进入数据框,您就可以将嵌套的json处理为表格数据,依此类推。
答案 2 :(得分:1)
您可以尝试如下操作。
arr_bins = np.bincount(np.concatenate(list_arr))
histo = np.array([range(len(arr_bins)),arr_bins]).T
现在您可以通过>>> import pandas as pd
>>> import json
>>> import requests
>>> source = requests.get("https://api.lineups.com/nba/fetch/lineups/gateway").json()
>>> df = pd.DataFrame.from_dict(source) # directly use source as itself is a dict
将数据帧转换为csv格式,如下所示:
df.to_csv
下面只是您可以根据需要处理数据的列。
>>> df.to_csv("nba_play.csv")
但是,正如Charles所说,您可以使用>>> df.columns
Index(['bottom_header', 'bottom_paragraph', 'data', 'heading',
'intro_paragraph', 'page_title', 'twitter_link'],
dtype='object')
,以表格形式更好地查看数据。
json_normalize
希望,这会有所帮助