我试图从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)
目前没有回答
相关问题 更多 >
编程相关推荐