2016-05-08 3 views
2
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をダウンロードしたので、私は非常に新しいです。この1つのデータセットがプロジェクトに必要でした。どんなアドバイスや指示も高く評価されます。jsonデータをExcelから印刷するにはどうすればいいですか?

誰かが見たいと思ったら、ここにいくつかのゲームコードがあります。おかげ

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

答えて

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は、Webページの解析された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) 
+0

は助けてくれてありがとう。ヘッダー名だけのブランク.csvとして表示されます。それは私が望む実際のデータの辞書キーを見つけるのに問題があるようです。 – denn9268

+0

@ denn9268おっと、コードのようにいくつかのバグがありました。今すぐイベントとIDの列を含むCSVファイルを提供する必要があります。 – Ownaginatious

+0

私は "return self.writer.writerow(self._dict_to_list(rowdict))"エラーが発生しています – denn9268

1

いくつかの考えです:

  • 私は(あなたがpip install requestsする必要があるかもしれません)Pythonで、すべてのHTTPのニーズにurllibはの代替として優れたrequestsを指摘したいと思います。
  • requestsには、内蔵のjsonデコーダが付属しています(BeautifulSoupは必要ありません)。
  • 実際、ヘッダーとデータ行を印刷するための素晴らしいモジュール(csv)を既にインポートしています。このモジュールを使用して、データをファイルに書き込むこともできます。
  • データは、Pythonの辞書(dict)、のキーによって索引付けされたデータ構造体として返されます。 の値にアクセスすることができます(これは、これらのキーを使用してデータに「特定の行」を意味します)。あなたが望むものを達成するために多くの可能な方法の

ワン:

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

ありがとう! @ダニエル追加のキーを追加する最良の方法は何ですか? – denn9268

+0

私の喜び!私の答えにコメントを追加しました。それが意味をなさない場合は明確にすることを喜んでします。 – Daniel

+0

キーエラーが戻ってきました。 – denn9268

関連する問題