从JSON文件中提取/抓取特定数据

时间:2011-10-05 21:10:36

标签: php javascript jquery python

这让我烦恼了好几个小时。我一直在搜索,我发现了很多信息。问题是,我不是那么好,我实际上是最大的初学者。我想用Python实现这个目标(如果可能的话!)。也许使用JavaScript和PHP?让我解释一下。

我刚刚找到这个网站http://listeningroom.net,这很棒。您可以创建/加入会议室并上传曲目,并与朋友一起收听。

我想从.json文件中提取/获取/获取一些特定数据。 此文件包含艺术家专辑标题曲目标题等。我想提取艺术家,专辑和曲目标题。

http://listeningroom.net/room/chillasfuck/spins.json .json文件 包含过去24小时内播放的曲目。

我在查看了(本地.json文件)后,设法用Python抓取整个.json文件,其中可能没有那么有效的代码。

   json_data=open('...\spins.json')

   data = json.load(json_data)
   pprint(data)

   json_data.close()

这打印出以下内容:

   [{u'endTime': u'1317752614105',
   u'id': u'cf37894e8eaf886a0d000000',
   u'length': 492330,
   u'metadata': {u'album': u'Mezzanine',
            u'artist': u'Massive Attack',
            u'bitrate': 128000,
            u'label': u'Virgin',
            u'length': 17494.479054779807,
            u'title': u'Group Four'},

只是印刷品的一部分

1。我想从网址(顶部提供的网址)抓取它 2。只需获取'专辑','艺术家'和'标题' 3。确保打印尽可能简单:

Artist
Track title
Album

Artist
Track title
Album

4. 如果不是太多,请将其保存为.txt文件

我希望我能得到一些帮助,我真的想为自己创造这个,所以我可以查看更多音乐!

马文

4 个答案:

答案 0 :(得分:3)

Python(加载json之后)

for elem in data:
    print('{artist}\n{title}\n{album}\n'.format(**elem['metadata']))

要保存在文件中:

with open('the_file_name.txt','w') as f:
    for elem in data:
        f.write('{artist}\n{title}\n{album}\n\n'.format(**elem['metadata']))

答案 1 :(得分:2)

好的,这有点短,但关于json的事情是将数组转换为字符串

例如。 array ['first'] ='你好'; array ['second'] ='there';

将成为 [{u'first':u'hello',u'second':'there'}]; 在jsonencode之后 通过jsondecode运行那个刺痛你得到你的阵列

所以只需运行你的json文件解码器,然后你就可以通过以下方式获取数据:

array['metadata'].album
array['metadata'].artist
...

从未使用过python,但它应该是相同的。

看看http://www.php.net/manual/en/function.json-decode.php它可能会清除一两件事。

答案 2 :(得分:2)

你已经非常接近了。

data = json.load(json_data)

正在获取JSON字符串并将其转换为Python对象 - 在本例中是一个字典列表(加上'metadata',这是一个字典字典)。

要将其转换为您想要的格式,您只需循环浏览项目。

for song in data:
    artist = song['metadata']['artist'] # This tells it where to look in the dictionary. It's looking for the dictionary item called 'metadata'. Then, looking inside that dictionary for 'artist'.
    album = song['metadata'['album']
    songTitle = song['metadata']['title']
    print '%s\n%s\n%s\n' % (artist, album, songTitle)

或者,将其打印到文件:

with open('the_file_name.txt','w') as f:
    for song in data:
        artist = song['metadata']['artist']
        album = song['metadata'['album']
        songTitle = song['metadata']['title']
        f.write('%s\n%s\n%s\n' % (artist, album, songTitle))

答案 3 :(得分:1)

对于PHP,您需要json.decode

<?php
      $json = file_get_contents($url);
      $val = json_decode($json);
      $room = $val[0]->metadata;
echo "Album : ".$room->album."\n";
echo "Artist : ".$room->artist."\n";
echo "Title : ".$room->title."\n";
?>

输出

Album  :  Future Sandwich
Artist :  Them, Roaringtwenties
Title  :  Fast Acting Nite-Nite Spray With Realistic Uncle Beard

请注意其卡车载入的JSON数据,因此您必须充分迭代