我正在尝试仅生成以下JSON数据字段,但是由于某种原因,它将整个页面写入.html文件?我究竟做错了什么?它仅应产生引用的框标题,音频源网址,中等大小的图像等?
r = urllib.urlopen('https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=10000&page=1')
data = json.loads(r.read().decode('utf-8'))
for post in data['posts']:
# data.append([post['title'], post['audioSource'], post['image']['medium'], post['excerpt']['long']])
([post['title'], post['audioSource'], post['image']['medium'], post['excerpt']['long']])
with io.open('criminal-json.html', 'w', encoding='utf-8') as r:
r.write(json.dumps(data, ensure_ascii=False))
答案 0 :(得分:3)
您要与 input 数据和 output 数据区分开。在for循环中,您引用用于输入的变量data
与用于输出的变量相同。您想要将输入中的选定数据添加到包含输出的列表中。
不要重复使用相同的变量名。这就是您想要的:
import urllib
import json
import io
url = urllib.urlopen('https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=10000&page=1')
data = json.loads(url.read().decode('utf-8'))
posts = []
for post in data['posts']:
posts.append([post['title'], post['audioSource'], post['image']['medium'], post['excerpt']['long']])
with io.open('criminal-json.html', 'w', encoding='utf-8') as r:
r.write(json.dumps(posts, ensure_ascii=False))
答案 1 :(得分:1)
您正在将整个json加载到变量数据中,并且将其转储而不进行更改。这就是为什么发生这种情况的原因。您需要做的是将所需的内容放入新变量中,然后将其转储。
查看行- ([[post ['title'],post ['audioSource'],post ['image'] ['medium'],post ['excerpt'] ['long']])
它什么都不做。因此,数据保持不变。照马克·托隆宁的建议做,就可以了。