ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用PRAW从Python中解码Reddit API中的JSON

2019-09-01 18:57:24  阅读:240  来源: 互联网

标签:python json api gtk reddit


我在Python / GTK应用程序中使用PRAW for Reddit API.我已成功使用API​​,但似乎无法解码JSON以供使用.应该知道我是Python和GTK应用程序的初学者.

# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
### BEGIN LICENSE
# This file is in the public domain
### END LICENSE

import gettext
from gettext import gettext as _
gettext.textdomain('redditreader')

from gi.repository import Gtk # pylint: disable=E0611
import logging
logger = logging.getLogger('redditreader')

from redditreader_lib import Window
from redditreader.AboutRedditreaderDialog import AboutRedditreaderDialog
from redditreader.PreferencesRedditreaderDialog import PreferencesRedditreaderDialog

import praw

import json
import simplejson
from pprint import pprint

# See redditreader_lib.Window.py for more details about how this class works
class RedditreaderWindow(Window):
    __gtype_name__ = "RedditreaderWindow"

    def finish_initializing(self, builder): # pylint: disable=E1002
        """Set up the main window"""
        super(RedditreaderWindow, self).finish_initializing(builder)

        self.AboutDialog = AboutRedditreaderDialog
        self.PreferencesDialog = PreferencesRedditreaderDialog

        # Code for other initialization actions should be added here.
r = praw.Reddit(user_agent='example')
try:
    submissions = r.get_front_page(limit=5)
    [str(x) for x in submissions]
    jsondatafirst = simplejson.loads(str(submissions))
    jsondata = unicode(jsondatafirst, 'utf-8')
    print(jsondata)
except (simplejson.decoder.JSONDecodeError, ValueError):
    print 'Decoding JSON has failed'

解决方法:

使用PRAW,您不需要进行任何json解码,因为PRAW会为您处理所有这些.

例如,对于每个提交,您要打印出upvotes的数量,downvotes的数量和提交标题.你可以这样做:

for submission in r.get_front_page(limit=5):
    print submission.ups, submission.downs, submission.title

如果要查看可在提交对象上使用的所有属性,可以运行:

import pprint
for submission in r.get_front_page(limit=5):
    pprint.pprint(vars(submission))

此外,如果您想从提交中获取评论,则可以使用submission.comments属性.您还可以手动查看请求的json响应,以查看PRAW(example)应该提供哪些属性.

未在对象的任何位置明确列出属性,因为属性是直接从关键名称在请求的关联json响应中创建的.

标签:python,json,api,gtk,reddit
来源: https://codeday.me/bug/20190901/1785311.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有