Python无法使用JSON对象模式解析iTunes id查找

2024-09-28 01:24:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从itunes查找工具中解析有关应用程序的信息,例如https://itunes.apple.com/lookup?id=880047117。你知道吗

现在我正在尝试使用请求、JSON和JSON对象模式打开一个连接。但是,架构不断失败,并出现以下错误:

Traceback (most recent call last):
  File "parse_and_query.py", line 33, in <module>
    details = get_app_details(880047117)
  File "/usr/lib/python3.5/site-packages/jsonobjects/schema.py", line 87, in wrapper
    return self.parse(func(*args, **kwargs))
  File "/usr/lib/python3.5/site-packages/jsonobjects/fields.py", line 169, in parse
    return self.run_validation(value)
  File "/usr/lib/python3.5/site-packages/jsonobjects/fields.py", line 136, in run_validation
    is_empty, value = self.validate_empty_values(value)
  File "/usr/lib/python3.5/site-packages/jsonobjects/fields.py", line 105, in validate_empty_values
    self.fail('required')
  File "/usr/lib/python3.5/site-packages/jsonobjects/fields.py", line 165, in fail
    raise ValidationError(msg.format(**kwargs), self.field_name)
jsonobjects.exceptions.ValidationError: ['This field is required.']

模式被声明为它自己的类对象并被实例化,但是它不断地失败。我有我想查找JSON信息的应用程序的ID。如果有一个更简单的方法,我错过了请让我知道,我没有访问iTunesAPI。你知道吗

#!/usr/local/bin/python3.5                                                      

import json                                                                     
import requests                                                                 
import jsonobjects as jo                                                        
from jsonschema import Draft4Validator                                          


class iTunesAppSchema(jo.Schema):                                               
    id = jo.IntegerField('trackId')                                             
    url = jo.Field('trackViewUrl')                                              
    name = jo.StringField('trackName')                                           
    rating = jo.FloatField('averageUserRating')                                    
    reviews = jo.IntegerField('userRatingCountForCurrentVersion')                  
    version = jo.StringField('version')                                            
    bundle_id = jo.StringField('bundleId')                                         
    publisher_id = jo.IntegerField('artistId')                                     
    publisher_url = jo.Field('artistViewUrl')                                      
    publisher_name = jo.StringField('artistName')                                  
    categories = jo.ListField('genres', child=jo.StringField())                    



parser = iTunesAppSchema('results[0]')                                             

@parser.as_decorator                                                               
def get_app_details(app_id):                                                       
    url = 'https://itunes.apple.com/lookup?id={}'                                  
    return requests.get(url.format(app_id)).json()                                 

# https://itunes.apple.com/lookup?id=880047117                                     
details = get_app_details(880047117)                                               
print(details) 

Tags: inpyselfidapplibpackagesusr

热门问题