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

时间:2016-05-08 23:23:12

标签: python json parsing csv url

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"]

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

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

21127,20788,20922,20752,21094,21196,21295,21159,21128,20854,21057

2 个答案:

答案 0 :(得分:1)

以下是一些想法:

  • 我想指出优秀的requests作为urllib的替代方案,以满足您在Python中的所有HTTP需求(您可能需要pip install requests)。
  • requests附带一个内置的json解码器(你不需要BeautifulSoup)。
  • 实际上,您已经导入了一个很棒的模块(csv)来打印标题和数据行。您也可以使用此模块将数据写入文件。
  • 您的数据在Python中以字典(dict)的形式返回,这是一种由 keys 索引的数据结构。您可以使用这些密钥访问数据中的(我认为这就是您所说的"特定行")。

实现目标的众多可能方法之一:

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"]])

答案 1 :(得分:0)

你不需要美丽的汤;数据可以直接从URL读取为JSON格式。

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())

此时,data是您网页的解析JSON。

Excel可以读取csv文件,因此最简单的路线就是使用this库将所需数据导出到CSV文件中。

这应该足以让你入门。修改fieldnames以在csv文件的列中包含特定事件详细信息。

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)