我正在尝试将下面链接的json中的所有"作者"条目保存到一个列表中,但是我对python非常陌生。有人可以指出我正确的方向吗?
JSON:https://codebeautify.org/jsonviewer/cb0d0a91
尝试抓取 reddit 线程:
import requests
import json
url ="https://www.reddit.com/r/easternshoremd/comments/72u501/going_to_be_in_the_easton_area_for_work_next_week.json"
r = requests.get(url, headers={'User-agent': 'Chrome'})
d = r.json()
scrapedids = []
for child in d['data']['children']:
scrapedids.append(child['data']['author'])
print (scrapedids)
如果我将网址从reddit帖子切换到subreddit,那么它可以工作。例如,如果我设置
url = ("https://www.reddit.com/r/easternshoremd.json")
我相信问题是我对 json 的目录/树(无论它叫什么)缺乏理解。我已经挂了几个小时,感谢任何帮助。
错误:
回溯(最近一次调用): 文件 "/home/usr/PycharmProjects/untitled/delete.py",第 14 行,在 对于 d['data']['children'] 中的子项:类型错误:列表索引必须是整数或切片,而不是 str
你包含一个指向 JSON 的链接,这很好。它表明根是一个数组。
因此,您的代码应该更像:
import requests
import json
url ="https://www.reddit.com/r/easternshoremd/comments/72u501/going_to_be_in_the_easton_area_for_work_next_week.json"
r = requests.get(url, headers={'User-agent': 'Chrome'})
listings = r.json()
scrapedids = []
for listing in listings:
for child in listing['data']['children']:
scrapedids.append(child['data']['author'])
print (scrapedids)
请注意,我将d
重命名为与kind
属性("列表")相关的listings
。