AttributeError: 'Submission' object has no attribute 'poll_data' in PRAW

AttributeError: 'Submission' object has no attribute 'poll_data' in PRAW

我正在尝试从我正在开发的游戏的 subreddit r/WouldYouRather 访问 Reddit post 的标题和投票。在下面的代码中,我试图访问 10 个这样的 posts,获取提交的标题,以及用户提出的民意调查的选项。但是,当我 运行 代码时,我得到一个错误,指出 poll_data 属性对于提交 object 不存在,据我所知,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 的代码时,post 标题列表打印得很好,所以我不确定为什么这段代码会出错。为什么会这样?

编辑:

我尽可能地简化了代码,但仍然得到相同的错误信息:

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)

简单回答:最热门的 post 不是投票,因此它没有 poll_data 属性。我认为最热门的 post 只是 subreddit 的介绍。

我更新了您的代码以检查 post 是否具有属性 poll_data,它会将所有 post 与投票数据插入您的列表:

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()是否提交有轮询数据,否则将被忽略。