Я работаю над анализом настроений с использованием 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, но, изучая документацию, я не видел, возможно ли это.

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

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

3
La_haine 13 Сен 2018 в 15:54

2 ответа

Лучший ответ

Вопрос A .

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

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

import requests

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

Вопрос B .

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

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

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

2
Harshith Bolar 13 Сен 2018 в 14:08

< Сильный > РЕШЕНИЕ !!!

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

1
La_haine 14 Сен 2018 в 08:24