python - 仅从 JSON 文件中抓取选择字段
问题描述
我试图只生成以下 JSON 数据字段,但由于某种原因它将整个页面写入 .html 文件?我究竟做错了什么?它应该只生成引用的框,例如标题、audiosource url、中等大小的图像等?
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))
解决方案
您想要区分输入数据和输出数据。在您的 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))
推荐阅读
- python - 每天最多打印一条消息
- php - 社交登录/注册功能的最佳 Laravel 包或插件是什么?
- javascript - 使用服务器时间戳和 service-worker 滞后的倒计时。怎么解决?
- docker - 在 docker 容器中运行 nordvpn
- laravel - 发布请求状态代码:405 方法不允许
- python - 如果数据是字节格式,我如何从办公文档中读取标题信息元数据?
- python-3.x - 在使用 parsedatetime 从输入字符串中获取时间结构后,如何将字符串的其余部分切出?
- tensorflow - TensorflowJS:输出的不同形状
- reactjs - 单击“取消”按钮时跳过对 React-Final-Form 的验证
- swift - 如何控制类对象实例自动转换为字符串?