2016-01-24 3 views
1

Я пытаюсь получить ответ от ip-api.com для большинства диапазонов IP. Но я хочу сохранить эти данные в Aerospike, но у меня есть некоторые ошибки.Хранение данных JSON в Aerospike в Python

Вот сценарий Python

# import the module 
from __future__ import print_function 
import aerospike 
import urllib2 
config = { 
    'hosts': [ ('127.0.0.1', 3000) ] 
} 

try: 
    client = aerospike.client(config).connect() 
except: 
    import sys 
    print("failed to connect to the cluster with", config['hosts']) 
    sys.exit(1) 

key = ('ip', 'hit', 'trial') 

try: 
    for i in range(0,255): 
    for j in range(0,255): 
     for k in range(0,255): 
      for l in range(0,255): 
       if not((i == 198 and j == 168) or (i == 172 and j > 15 and j < 32) or (i == 10)): 
        response = urllib2.urlopen('http://ip-api.com/json/'+str(i)+'.'+str(j)+'.'+str(k)+'.'+str(l)) 
        html = response.read() 
        client.put(key, html) 
except Exception as e: 
    import sys 
    print("error: {0}".format(e), file=sys.stderr) 


client.close() 

Я новичок в Python, а также Aerospike, Infact любые базы данных запретные для SQL. Любая помощь будет оценена по достоинству.

+0

Было бы полезно получить представление о том, как выглядит этот объект в _html_, и о том, что вы видите. Метод [aerospike.Client.put] (http://www.aerospike.com/apidocs/python/client.html#aerospike.Client.put) довольно прост - он ожидает пары ключ-значение. –

+0

Используйте правильную капитализацию! – niutech

ответ

1

Весь код с aerospike точки зрения это правильно, за исключением того, что вы хотели изменить

html = response.read() 
client.put(key, html) 

к

import json 

client.put(key, json.load(response)) 

ответ является JSON строка, которая должна быть преобразована в объект JSON

+0

Это то, что возникает после использования вашего решения ** ошибка: объект JSON не может быть декодирован ** –

+1

Это потому, что ответ на этот конкретный запрос недействителен json. Попробуйте закрутить этот URL-адрес или через браузер. –