【发布时间】:2017-08-26 01:56:08
【问题描述】:
我试图从 subreddit 中抓取每一个帖子,一直到 2010 年开始,特别是 /r/nosleep。
我抓取这些帖子的代码是通常的:
for submission in nosleep.submissions(end=int(time.time()):
它运行良好,我检查了我的凭据,它们都有效,它可以轻松获取两年的帖子而没有任何问题。发生的情况是我运行了上面的 for 循环,在最后的某个时间点,它返回一个 401 并使整个程序崩溃。
我已经检查并确认了以下场景:
- 它会从 2010 年到 2011 年抓取,点击子版块的“开始”并认为在子版块开始之前禁止抓取帖子没有问题。
- 我已在每个循环中打印出
reddit.auth.limits,它们都以None回复,所以我并没有用完请求限额。
解决这个问题的唯一“技巧”是将工作分成两个 for 循环,将 int(time.time()) 分成两个(或更多)部分并像这样迭代每个部分:
for submission in nosleep.submissions(start=middle, end=int(time.time())):
for submission in nosleep.submissions(end=middle):
即便如此,它有时也会返回 401。我怀疑这是因为此循环运行的时间长,但我不知道。有没有人对新方法有任何建议,或者编辑 PRAW 源以适应?
【问题讨论】:
标签: python-3.x praw reddit