我使用PRAW处理reddit提交,特别是已经解决的提交并且具有他们的"天赋"属性设置为SOLVED(如here所述)。
然而,我得到了"没有"当我检查天赋时,即使是我能看到的提交已经设置为已解决。
我有以下代码,它适用于肯定已设置为已解决的提交。
solvedSubmission = reddit.submission(url='https://www.reddit.com/r/PhotoshopRequest/comments/6ctkpj/specific_can_someone_please_remove_kids_12467_i/')
pprint.pprint(vars(solvedSubmission))
输出:
{'_comments_by_id': {},
'_fetched': False,
'_flair': None,
'_info_params': {},
'_mod': None,
'_reddit': <praw.reddit.Reddit object at 0x10e3ae1d0>,
'comment_limit': 2048,
'comment_sort': 'best',
'id': '6ctkpj'}
任何人都可以提供任何见解,为什么我在这篇文章和其他已解决的帖子中看到&#34;无&#34;?还有另一种方法,reddit会跟踪我应该研究的已解决的帖子吗?
谢谢!
答案 0 :(得分:0)
到现在为止(在OP之后大约1年)你可能已经解决了这个问题,但是我在搜索中找到了答案,因为我找到了答案,我将分享。
您从未见过任何相关信息的原因是PRAW uses lazy objects so that network requests to Reddit’s API are only issued when information is needed。您需要使其非延迟才能检索所有可用数据。以下是一个最小的工作示例:
import praw
import pprint
reddit = praw.Reddit() # potentially needs configuring, see docs
solved_url = 'https://www.reddit.com/r/PhotoshopRequest/comments/6ctkpj/specific_can_someone_please_remove_kids_12467_i/'
post = reddit.submission(url=solved_url)
print(post.title) # this will fetch the lazy submission-object...
pprint.pprint(vars(solvedSubmission)) # ... allowing you to list all available fields
在pprint
- 输出中,您将在撰写此答案时(2018年3月)发现以下字段:
...
'link_flair_text': 'SOLVED',
...
...这是您希望在代码中使用的内容,例如像这样:
is_solved = 'solved' == post.link_flair_text.strip().lower()
因此,要将其包装起来,您需要让PRAW发出网络请求以获取提交对象,将其从惰性转换为完整实例;您可以通过打印,分配变量或通过使用所需的字段名称直接进入对象来完成此操作。