Python JSON 从 API 解析
Python JSON Parsing from API
我正在尝试从 YQL 中解析 JSON 格式的数据,但它不起作用。具体来说,我得到以下输出:
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'])
您必须先获取数据,然后才能对其进行解码。尝试使用 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)
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)
json.loads
将传递的字符串转换为 dict
对象。它 不会 进行 URL 调用然后解析结果。
您需要使用 urllib2
>>> import urllib2
>>> content = urllib2.urlopen(some_url).read()
>>> print json.loads(content)
或requests
图书馆
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> print r.json()
urllib2
或 requests
将通过向 URL 发送请求来获取 JSON 数据。收到数据后,您可以使用 json.loads()
解析它。
我正在尝试从 YQL 中解析 JSON 格式的数据,但它不起作用。具体来说,我得到以下输出:
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'])
您必须先获取数据,然后才能对其进行解码。尝试使用 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)
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)
json.loads
将传递的字符串转换为 dict
对象。它 不会 进行 URL 调用然后解析结果。
您需要使用 urllib2
>>> import urllib2
>>> content = urllib2.urlopen(some_url).read()
>>> print json.loads(content)
或requests
图书馆
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> print r.json()
urllib2
或 requests
将通过向 URL 发送请求来获取 JSON 数据。收到数据后,您可以使用 json.loads()
解析它。