如何正确地从reddit抓取json响应



我正在尝试将下面链接的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

最新更新