Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将json数据从url打印到excel?_Python_Json_Parsing_Csv_Url - Fatal编程技术网

Python 如何将json数据从url打印到excel?

Python 如何将json数据从url打印到excel?,python,json,parsing,csv,url,Python,Json,Parsing,Csv,Url,我似乎无法访问库来打印正确的标题和行。我最终希望将特定行导出到csv。我两天前下载了python,所以我是个新手。我需要一个项目的数据集。如有任何建议或指示,将不胜感激 如果有人想看的话,这里有一些游戏代码。谢谢 211270788209222075221094211962129521159211282085421057你不需要漂亮的汤;数据可以直接从URL读取为JSON格式 import urllib import json import re import csv from bs4 imp

我似乎无法访问库来打印正确的标题和行。我最终希望将特定行导出到csv。我两天前下载了python,所以我是个新手。我需要一个项目的数据集。如有任何建议或指示,将不胜感激

如果有人想看的话,这里有一些游戏代码。谢谢


211270788209222075221094211962129521159211282085421057你不需要漂亮的汤;数据可以直接从URL读取为JSON格式

import urllib 
import json
import re
import csv
from bs4 import BeautifulSoup

game_code = open("/Users//Desktop/PYTHON/gc.txt").read()

game_code = game_code.split("\r")


for gc in game_code:

    htmltext =urllib.urlopen("http://cluster.leaguestat.com/feed/index.php?feed=gc&key=f109cf290fcf50d4&client_code=ohl&game_id="+gc+"&lang_code=en&fmt=json&tab=pxpverbose")

    soup= BeautifulSoup(htmltext, "html.parser")
    j= json.loads(soup.text)
    summary = ['GC'],['Pxpverbose']
    for event in summary:
        print gc, ["event"]
此时,
data
是网页的解析JSON

Excel可以读取csv文件,所以最简单的方法是使用库将所需数据导出到csv文件中

这应该足以让你开始。修改
字段名
,以在csv文件的列中包含特定的事件详细信息

import urllib, json
response = urllib.urlopen("http://cluster.leaguestat.com/feed/index.php?feed=gc&key=f109cf290fcf50d4&client_code=ohl&game_id=" + gc +"&lang_code=en&fmt=json&tab=pxpverbose")
data = json.loads(response.read())

以下是一些想法:

  • 我想指出,对于Python中的所有HTTP需求(您可能需要
    pip安装请求
    ),urllib是一个非常好的替代方案
  • 请求
    附带内置json解码器(您不需要BeautifulSoup)
  • 事实上,您已经导入了一个很棒的模块()来打印标题和数据行。您还可以使用此模块将数据写入文件
  • 在Python中,数据以字典()的形式返回,Python是一种由键索引的数据结构。您可以使用这些键访问数据中的值(我认为这就是您所说的“特定行”)
实现目标的多种可能方法之一:

import csv

with open('my_games.csv', 'w') as csvfile:
    fieldnames = ['event', 'id']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames,
                            extrasaction='ignore')
    writer.writeheader()
    for event in data['GC']['Pxpverbose']:
        writer.writerow(event)

谢谢你的帮助。仍然以空白的.csv格式打印,只包含标题名。它似乎很难找到我想要的实际数据的字典键。@denn9268哎呀,代码似乎有几个bug。现在应该给您一个包含事件和ID列的CSV文件。我收到错误“返回self.writer.writerow(self.\u dict\u to_list(rowdict))”谢谢@丹尼尔,添加额外钥匙的最佳方式是什么?我很乐意!在我的回答中添加了评论;如果没有意义,很乐意澄清。这意味着您正在尝试引用每个“摘要”字典中不存在的键。在注释中,您可以查看错误处理,而不必在这里进行详细说明:。如果您刚刚开始使用Python,则有点高级,但这是正确的方向。想法是:
try:wr.writerow([gc,summary[“event”],summary[“某个不存在的键”]),除了KeyError:#处理这个错误
我很乐意!因为您是Stackoverflow的新手,所以说“谢谢”的最佳方式是接受并投票给答案:。祝你好运
import requests
import csv

game_code = open("/Users//Desktop/PYTHON/gc.txt").read()
game_code = game_code.split("\r")

for gc in game_code:
    r = requests.get("http://cluster.leaguestat.com/feed/index.php?feed=gc&key=f109cf290fcf50d4&client_code=ohl&game_id="+gc+"&lang_code=en&fmt=json&tab=pxpverbose")
    data = r.json()

    with open("my_data.csv", "a") as csvfile:
        wr = csv.writer(csvfile,delimiter=',')
        for summary in data["GC"]["Pxpverbose"]:
            wr.writerow([gc,summary["event"]])
            # add keys to write additional values;
            # e.g. summary["some-key"].  Example: 
            # wr.writerow([gc,summary["event"],summary["id"]])