仅从 JSON 文件中抓取 select 字段
Scraping only select fields from a JSON file
我试图只生成以下 JSON 数据字段,但出于某种原因它将整个页面写入 .html 文件?我究竟做错了什么?它应该只生成引用的框,例如标题、音频源 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
与您用来输入的变量相同,因为您正在使用它来输出。您想要将所选数据从输入添加到包含输出的列表。
不要re-use相同的变量名。这就是你想要的:
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))
您正在将整个 json 加载到变量数据中,并且在不更改的情况下将其转储。这就是发生这种情况的原因。您需要做的是将您想要的任何内容放入一个新变量中,然后将其转储。
看到这行 -
([post['title'], post['audioSource'], post['image']['medium'], post['excerpt']['long']])
它什么都不做。所以,数据保持不变。按照 Mark Tolonen 的建议去做,一切都会好的。
我试图只生成以下 JSON 数据字段,但出于某种原因它将整个页面写入 .html 文件?我究竟做错了什么?它应该只生成引用的框,例如标题、音频源 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
与您用来输入的变量相同,因为您正在使用它来输出。您想要将所选数据从输入添加到包含输出的列表。
不要re-use相同的变量名。这就是你想要的:
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))
您正在将整个 json 加载到变量数据中,并且在不更改的情况下将其转储。这就是发生这种情况的原因。您需要做的是将您想要的任何内容放入一个新变量中,然后将其转储。
看到这行 - ([post['title'], post['audioSource'], post['image']['medium'], post['excerpt']['long']])
它什么都不做。所以,数据保持不变。按照 Mark Tolonen 的建议去做,一切都会好的。