2016-02-15 4 views
2

Я пытаюсь извлечь данные из этого json bitcoin apiМетод загрузка JSON объекта как JSON файл питон

хранится в файле JSON. Сначала я попытался

import urllib, json 
url = "http://api.coindesk.com/v1/bpi/currentprice.json" 
response = urllib.urlopen(url) 
data = json.loads(response.read()) 
print data 

он работал в первый, но если я запускаю ее снова, я получаю эту ошибку:

Traceback (most recent call last): 
    File "btc_api.py", line 4, in <module> 
    data = json.loads(response.read()) 
    File "/usr/lib/python2.7/json/__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/json/decoder.py", line 366, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode 
    raise ValueError("No JSON object could be decoded") 
ValueError: No JSON object could be decoded 

я должен запустить код периодически, чтобы получить новейшую валюту и хранить его в база данных. Может ли кто-нибудь помочь мне в этом вопросе или какие-нибудь идеи, как это сделать лучше?

ответ

2

Вы можете использовать requests с json методом он обеспечивает:

import requests 

url = "http://api.coindesk.com/v1/bpi/currentprice.json" 
data = requests.get(url).json() 

Хотя, если вы все еще хотите использовать urllib использования json.load:

import urllib 
import json 

url = "http://api.coindesk.com/v1/bpi/currentprice.json" 
response = urllib.urlopen(url) 
data = json.load(response) 
+0

@array вам нужно использовать нагрузку, не загружается – tinySandy

+0

Хорошо, я исправил это. Теперь я получаю AttributeError: объект 'str' не имеет атрибута 'read'. : /, а два других метода - ошибки. – Array

+0

Если я попробую другие методы, это дает мне: raise ValueError («Нет объекта JSON можно декодировать» – Array

Смежные вопросы