我正在使用The 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:我如何从特定日期提取评论/消息?
问题A:
你可以简单地在帖子的完整网址的末尾添加一个.json
,以获得该页面的完整Json,其中包括标题,作者,评论,投票和其他所有内容。
一旦你使用submission.permalink
得到帖子的完整网址。您可以使用requests
获取该页面的Json。
import requests
url = submission.permalink
response = requests.get('http' + url + '.json')
json = response.content # your Json
问题B:
不幸的是,Reddit去年某个时候从他们的搜索API中删除了时间戳搜索。这是关于它的announcement post。
除了一些较小的语法差异外,最显着的变化是在较新的系统上不再支持按精确时间戳进行的搜索。通过?t =参数(例如?t = day)仍支持将结果限制为过去的小时,天,周,月和年
所以,目前没有办法使用Praw
这样做。但你可以查看提供此功能的Pushshift api。