【发布时间】:2017-10-29 18:24:00
【问题描述】:
我正在尝试将下面链接的 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)
如果我将 url 从 reddit 帖子切换到 subreddit,那么它就可以工作。例如,如果我设置
url = ("https://www.reddit.com/r/easternshoremd.json")
我认为问题在于我对 json 的目录/树(不管它叫什么)缺乏了解。我已经挂了几个小时,感谢任何帮助。
错误:
Traceback(最近一次调用最后一次): 文件“/home/usr/PycharmProjects/untitled/delete.py”,第 14 行,在 对于 d['data']['children'] 中的孩子: TypeError: 列表索引必须是整数或切片,而不是 str
【问题讨论】:
-
d是一个列表,或者d['data']是一个列表。您可以通过添加 print(d),然后在创建 d 的位置下方添加 print(d['data']) 来找出哪个。 -
如果您查看 json,您会看到基本 json 对象是一个列表,而“数据”在第一个条目中。因此,您可以在 child 和 ['data'] 之间添加 [0]。
标签: python json screen-scraping reddit