我正在尝试从子Reddit r/WouldYouRather访问我正在开发的一个游戏的Reddit帖子的标题和投票。在下面的代码中,我试图访问10个这样的帖子,获得提交的标题,以及用户提交的投票选项。但是,当我运行代码时,我得到了一个错误,指出提交对象的poll_data属性不存在,据我所知,该对象是isn't true。
请原谅我武断的变量名称,但这就是我所拥有的。
import os
import praw
reddit = praw.Reddit(client_id = 'H'],
client_secret = 'H'],
username = 'H'],
password = 'H'],
user_agent = 'H')
lmao = []
lmaolmao = []
sub = reddit.subreddit("wouldyourather")
hotstuff = sub.hot(limit = 10)
for submission in hotstuff:
lmao.append(submission.title)
lmaolmao.append(submission.poll_data.options)
print(lmao)
print(lmaolmao)当我取出任何关于poll_data的代码时,文章标题列表打印得很好,所以我不确定为什么这段代码会出错。为什么会发生这种情况?
编辑:
我尽可能地简化了代码,但仍然得到相同的错误消息:
import os
import praw
reddit = praw.Reddit(client_id = os.environ['client_id'],
client_secret = os.environ['client_secret'],
username = os.environ['username'],
password = os.environ['password'],
user_agent = os.environ['user_agent'])
sub = reddit.subreddit("wouldyourather").hot(limit = 1)
for submission in sub:
print(submission.poll_data.options)发布于 2021-07-21 05:24:55
答案很简单:最热门的帖子不是投票,因此它没有poll_data属性。我认为最热门的帖子就是subreddit的介绍。
我更新了您的代码,以检查该帖子是否具有poll_data属性,该属性会将所有包含调查数据的帖子插入到您的列表中:
lmao = []
lmaolmao = []
sub = reddit.subreddit("wouldyourather")
hotstuff = sub.hot(limit = 10)
for submission in hotstuff:
lmao.append(submission.title)
if hasattr(submission, 'poll_data'):
lmaolmao.append(submission.poll_data.options)
print(lmao)
print(lmaolmao)if检查hasattr()是否提交了轮询数据,否则将被忽略。
https://stackoverflow.com/questions/68461199
复制相似问题