2016-11-01 14 views
0

YQLからJSON形式のデータを解析しようとしていますが、動作しません。具体的には、私は次の出力を取得しています:Python JSON APIからの解析

File "C:\Python34\lib\json\__init__.py", line 318, in loads 
    return _default_decoder.decode(s) 
File "C:\Python34\lib\json\decoder.py", line 343, in decode 
    obj, end = self.raw_decode(s, idx=_w(s,0).end()) 
File "C:\Python34\lib\json\decoder.py", line 361, in raw_decode 
    raise ValueError(errmsg("Expecting value", s, err.value)) from None 
ValueError: Expecting Value: line 1 column 1 (char 0) 

これは、Pythonで何もで私の最初の試みです。私は主にC++やVBAで仕事をしていますが、これは私が学校でやっている研究のためのものです。 私はSOに似ている他の質問も見ましたが、それらはインターネットから直接ではなく、.txtファイルから解析していました。 誰でも洞察力を与えてくれれば大いに感謝します - ありがとう!あなたはそれをデコードすることができます前に、データをフェッチする必要が

import json 
result = json.loads('http://query.yahooapis.com/v1/public/yql?q=select%20Ask%20from%20yahoo.finance.quotes%20where%20symbol%20IN%20(%22CL=F%22)&format=json&env=http://datatables.org/alltables.env') # result is now a dict 
print (result['Ask']) 

答えて

3

は、ここに私のコードです。 requestsモジュールを使用してデータを取得してみてください。

import requests 

url = 'http://query.yahooapis.com/v1/public/yql' 
params = { 
    'q': 'select Ask from yahoo.finance.quotes where symbol IN ("CL=F")', 
    'format': 'json', 
    'env': 'http://datatables.org/alltables.env' 
} 

response = requests.get(url, params=params) 
data = response.json() 
print (data) 
1
import json, requests 

url = 'http://query.yahooapis.com/v1/public/yql?q=select%20Ask%20from%20yahoo.finance.quotes%20where%20symbol%20IN%20(%22CL=F%22)&format=json&env=http://datatables.org/alltables.env' 


resp = requests.get(url=url) 
data = json.loads(resp.text) 
0

json.loadsdictオブジェクトに渡された文字列を変換します。 は、にURL呼び出しを行い、結果を解析しません。

あなたが

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) 
>>> print r.json() 

urllib2またはrequests URLにリクエストを送信することにより、JSONデータをフェッチするかurllib2

>>> import urllib2 
>>> content = urllib2.urlopen(some_url).read() 
>>> print json.loads(content) 

またはrequestsライブラリを使用する必要があります。データを受け取ったら、json.loads()を使用して解析することができます。

関連する問題