Reddit PRAW API: извлечение всего формата JSON

Я работаю над анализом настроений с помощью Reddit API Praw. Мой код ниже:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import praw
from IPython import display
from nltk.sentiment.vader import SentimentIntensityAnalyzer as SIA
from pprint import pprint
import pandas as pd
import nltk
import seaborn as sns
import datetime

sns.set(style='darkgrid', context='talk', palette='Dark2')

reddit = praw.Reddit(client_id='XXXXXXXXXXX',
                     client_secret='XXXXXXXXXXXXXXXXXXX',
                     user_agent='StackOverflow')

headlines = set()
results = []
sia = SIA()

for submission in reddit.subreddit('bitcoin').new(limit=None):
    pol_score = sia.polarity_scores(submission.title)
    pol_score['headline'] = submission.title
    readable = datetime.datetime.fromtimestamp(submission.created_utc).isoformat()
    results.append((submission.title, readable, pol_score["compound"]))
    display.clear_output()

Вопрос A: с помощью этого кода я могу извлечь только заголовок текста и несколько других ключей. Я хотел бы извлечь все в формате JSON, но, изучая документацию, которую я не видел, возможно ли это.

Если я вызываю только submission в reddit.subreddit ('bitcoin'), получается только id-код. Я бы хотел извлечь все, любую информацию и сохранить ее в файле JSON.

Вопрос Б: Как мне извлечь комментарии / сообщения за определенный день?


person La_haine    schedule 13.09.2018    source источник


Ответы (2)


Вопрос А:

Вы можете просто добавить .json в конце полного URL-адреса сообщения, чтобы получить полный Json для этой страницы, который включает заголовок, автора, комментарии, голоса и все остальное.

Как только вы получите полный URL-адрес сообщения с помощью submission.permalink. Вы можете использовать requests, чтобы получить Json для этой страницы.

import requests

url = submission.permalink
response = requests.get('http' + url + '.json') 
json = response.content # your Json

Вопрос Б:

К сожалению, где-то в прошлом году Reddit удалил поиск по временным меткам из своего поискового API. Вот сообщение об этом.

Помимо некоторых незначительных различий в синтаксисе, наиболее заметным изменением является то, что поиск по точной временной метке больше не поддерживается в новой системе. Ограничение результатов до последнего часа, дня, недели, месяца и года по-прежнему поддерживается с помощью параметра? T = (например,? T = день)

Итак, в настоящее время нет возможности сделать это с помощью Praw. Но вы можете изучить Pushshift api, который предоставляет эту функцию.

person Harshith Bolar    schedule 13.09.2018
comment
Какой бардак! Вы решили мою проблему. Я часами изучал документацию в поисках большего. Спасибо за рекомендацию! - person La_haine; 13.09.2018

РЕШЕНИЕ !!!

Я пробовал использовать PRAW, но если кому-то интересно, я должен порекомендовать эти ссылки, которые иллюстрируют, как использовать pushshift API:

person La_haine    schedule 14.09.2018