我很难尝试从import.io加载API响应到文件或列表中。使用Python从import.io加载JSON行问题
我使用的是enpoint https://data.import.io/extractor/{0}/json/latest?_apikey={1}
以前我的所有脚本都设置为使用JSON正常,一切都运作良好,但现在嘿已经决定使用JSON行,但不知何故,它似乎格式不正确。
我试着去适应我的脚本的方法是阅读下列方式API响应:
url_call = 'https://data.import.io/extractor/{0}/json/latest?_apikey={1}'.format(extractors_row_dict['id'], auth_key)
r = requests.get(url_call)
with open(temporary_json_file_path, 'w') as outfile:
json.dump(r.content, outfile)
data = []
with open(temporary_json_file_path) as f:
for line in f:
data.append(json.loads(line))
这样做的问题是,当我检查数据[0],所有的JSON文件内容被倾倒在它...
data[1] = IndexError: list index out of range
这里是data[0][:300]
一个例子:
u'{"url":"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de","result":{"extractorData":{"url":"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de","resourceId":"23455234","data":[{"group":[{"Brand":[{"text":"Brand","href":"https://www.example.com'
有没有人有与此API的响应经验? 所有其他jsonline读取我从其他来源做的工作很好,除了这一个。基于评论
编辑:
print repr(open(temporary_json_file_path).read(300))
给出了这样的:
'"{\\"url\\":\\"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de\\",\\"result\\":{\\"extractorData\\":{\\"url\\":\\"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de\\",\\"resourceId\\":\\"df8de15cede2e96fce5fe7e77180e848\\",\\"data\\":[{\\"group\\":[{\\"Brand\\":[{\\"text\\":\\"Bra'
等一下,什么?您的输出看起来像您(或他们)添加了API内容的'repr()',因此JSON行编码为Python文字。 'print repr(open(temporary_json_file_path).read(300))'看起来像什么? –
在问题中增加了编辑 – johan855
是的,数据是* double-encoded *。这看起来像import.io端的错误。他们的拼抢工作如何?你写了一些代码?如果是这样,请不要将编码转换为JSON,因为它看起来像输出自动以JSON编码。 –