0

discogs API を使用して JSON データを取得しようとしていますが、ブラウザーにデータを raw として貼り付けたときに表示される出力がコードから得られないようです。私はPythonが初めてなので、ここで間違っていることを教えてください。タイトル、画像の出力を取得しようとしていました。ありがとう!

パイソン:

import urllib
import urllib2
import json
url = 'http://api.discogs.com/masters/66271'
request = urllib2.Request('http://api.discogs.com/masters/66271')
request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
request.add_header('Content-Type','application/json')
response = urllib2.urlopen(request)
json_raw= response.readlines()
json_object = json.loads(json_raw[0])
print json_object
for row in json_object:
    print row
            print row['title']

間違った出力:

styles
genres
videos
title
main_release
main_release_url
uri
artists
versions_url
year
images
resource_url
tracklist
id
data_quality
4

3 に答える 3

1

を使用しないでください.readlines()jsonライブラリに読み取りを行わせます。

response = urllib2.urlopen(request)
json_object = json.load(response)

末尾の関数名 , .load()noに注意してください。s

返されるオブジェクトは辞書です。表示される各文字列は、その辞書のキーです。必要なタイトルを指定する必要があります。tracklistとのvideos両方のエントリには、タイトル付きのアイテムのリストがあります。tracklistエントリのタイトルを印刷する方法は次のとおりです。

for track in json_object['tracklist']:
    print track['title']

どちらが印刷されますか:

HIStory Begins
Billie Jean
The Way You Make Me Feel
Black Or White
Rock With You
She's Out Of My Life
Bad
I Just Can't Stop Loving You
Man In The Mirror
Thriller
Beat It
The Girl Is Mine
Remember The Time
Don't Stop 'Til You Get Enough
Wanna Be Startin' Somethin'
Heal The World
HIStory Continues
Scream
They Don't Care About Us
Stranger In Moscow
This Time Around
Earth Song
D.S.
Money
Come Together
You Are Not Alone
Childhood (Theme From "Free Willy 2")
Tabloid Junkie
2 Bad
History
Little Susie
Smile
于 2013-01-26T11:46:05.570 に答える
1

これを試して、

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11')]
http_handle = opener.open(url)
jsonContent = http_handle.read()
http_handle.close()

import json
data = json.load(jsonContent)
data["videos"]["title"]//will return the title
data["videos"]["images"]["uri"]//will return the image url
于 2013-01-26T11:55:04.943 に答える
1

JSON から取得する配列は次のようになります。

{
    u 'images': [{
        u 'uri': u 'http://api.discogs.com/image/R-446273-1356211752-6937.jpeg',
    }, {
        u 'uri': u 'http://api.discogs.com/image/R-446273-1239130419.jpeg',
    }, {
        u 'uri': u 'http://api.discogs.com/image/R-446273-1239130427.jpeg',
    }, {
    ...
}

多くのエントリを含む「images」エントリがあります。これらはすべて「images」のサブエントリであり、「images」自体には取得できる「uri」属性はありません。

トラックのタイトルと同じように、すべての画像を反復処理する必要があります。for row in json_objectループを次のように置き換えます。

for row in json_object["images"]:
    print row['uri']
for row in json_object["tracklist"]:
    print row['title']
于 2013-01-26T11:50:16.960 に答える