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
答案 0 :(得分:1)
以下是一些想法:
requests
作为urllib的替代方案,以满足您在Python中的所有HTTP需求(您可能需要pip install requests
)。requests
附带一个内置的json解码器(你不需要BeautifulSoup)。csv
)来打印标题和数据行。您也可以使用此模块将数据写入文件。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)