2012-03-28 4 views
-1

В настоящее время я следующее, который разбирает JSon апи ..Получить соответствующее значение из ключа JSon в питоне

import simplejson 
import urllib2 

f = urllib2.urlopen('http://fanart.tv/webservice/series/f5b8e776c35e7536eac132802b03281f/80349/json/tvthumb/') 
data = simplejson.load(f) 

imagetypes = ['clearlogo', 'clearart', 'tvthumb', 'seasonthumb', 'characterart'] 

image_list = [] 
# split "name" and "data" 
for title, value in data.iteritems(): 
# run through specified types 
for art in imagetypes: 
# if type has been found 
    if value.has_key(art): 
    # Run through all the items 
     for item in value[art]: 
      info = {} 
      info['url'] = urllib2.quote(item['url'], ':/') # Original image url 
      if info: 
       image_list.append(info) 



print image_list 

Это возвращает следующее ..

[{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5287/C_80349%20%284%29.jpg'}, 
{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5286/C_80349%20%285%29.jpg'}, 
{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5288/C_80349%20%283%29.jpg'}, 
{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5289/C_80349%20%282%29.jpg'}, 
{'url': u'http://fanart.tv/fanart/tv/80349/tvthumb/5290/C_80349.jpg'}, {'url': 
'http://fanart.tv/fanart/tv/80349/tvthumb/5291/C_80349%20%280%29.jpg'}] 

Как я могу идти о получении только фактический url в список URL-адресов? Если бы вы могли объяснить шаги в своем ответе, чтобы я мог учиться на этом, я был бы признателен. Спасибо

+0

Я не уверен, что я понять, что вы просите. Вы создаете словарь и помещаете в него URL под ключом «url». Теперь вы спрашиваете, как не переносить URL-адрес в dict? Тогда почему вы это делаете в первую очередь? –

ответ

1

Как насчет этого.

# your old code avoce 
    for item in value[art]: 
     url = urllib2.quote(item['url'], ':/') # Original image url 
     if url: 
      image_list.append(url) 
1
>>> urllist = [{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5287/C_80349%20%284%29.jpg'}, 
... {'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5286/C_80349%20%285%29.jpg'}, 
... {'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5288/C_80349%20%283%29.jpg'}, 
... {'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5289/C_80349%20%282%29.jpg'}, 
... {'url': u'http://fanart.tv/fanart/tv/80349/tvthumb/5290/C_80349.jpg'}, {'url': 
... 'http://fanart.tv/fanart/tv/80349/tvthumb/5291/C_80349%20%280%29.jpg'}] 
>>> [item['url'] for item in urllist] 
['http://fanart.tv/fanart/tv/80349/tvthumb/5287/C_80349%20%284%29.jpg', 'http://fanart.tv/fanart/tv/80349/tvthumb/5286/C_80349%20%285%29.jpg', 'http://fanart.tv/fanart/tv/80349/tvth 
umb/5288/C_80349%20%283%29.jpg', 'http://fanart.tv/fanart/tv/80349/tvthumb/5289/C_80349%20%282%29.jpg', u'http://fanart.tv/fanart/tv/80349/tvthumb/5290/C_80349.jpg', 'http://fanart. 
tv/fanart/tv/80349/tvthumb/5291/C_80349%20%280%29.jpg'] 

Это должно дать вам URLs, что вам нужно, но это, кажется, как это:

for item in value[art]: 
    info = {} 
    info['url'] = urllib2.quote(item['url'], ':/') # Original image url 
    if info: 
     image_list.append(info) 

Может быть упрощено к этому:

for item in value[art]: 
    url = urllib2.quote(item(['url'], ':/') 
    if url: 
     image_list.append(url)