Twitter API连接因Twython而中止

2024-10-05 12:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从一个帐户列表下载twitter关注者。我的函数(使用twython)对于短帐户列表非常有效,但是对于较长的列表则会出现错误。因为我的速率函数在下一个时间限制之前是不存在的。 错误是这样的

twythonerror:(“连接中止”,错误(10054,“”)

其他人似乎也有同样的问题,建议的解决方案是让函数在不同的restapi调用之间休眠,所以我实现了以下代码

    del twapi
    sleep(nap[afternoon])
    afternoon = afternoon + 1
    twapi = Twython(app_key=app_key, app_secret=app_secret,
                oauth_token=oauth_token, oauth_token_secret=oauth_token_secret)

午睡是以秒为单位的时间间隔列表,下午是一个索引。 尽管有这个建议,我还是有同样的问题。睡眠似乎不能解决问题。 有人能帮我吗?在

这是整个发现

^{pr2}$

Tags: key函数tokenapp列表secret错误时间
1条回答
网友
1楼 · 发布于 2024-10-05 12:27:47

正如评论中所讨论的,目前您的代码有一些问题。你不需要删除你的连接才能正常工作,我认为问题来了,因为你第二次初始化,没有任何捕捉到你的速率限制。下面是一个使用Tweepy获取所需信息的示例:

import tweepy
from datetime import datetime


def download_followers(user, api):
    all_followers = []
    try:
        for page in tweepy.Cursor(api.followers_ids, screen_name=user).pages():
            all_followers.extend(map(str, page))
        return all_followers
    except tweepy.TweepError:
        print('Could not access user {}. Skipping...'.format(user))

# Include your keys below:
consumer_key = 'YOUR_KEY'
consumer_secret = 'YOUR_KEY'
access_token = 'YOUR_KEY'
access_token_secret = 'YOUR_KEY'

# Set up tweepy API, with handling of rate limits
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
main_api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

# List of usernames to get followers for
lookup_users = ['asongtoruin', 'mbiella']

for username in lookup_users:
    user_followers = download_followers(username, main_api)
    if user_followers:
        with open(username + '.txt', 'w') as outfile:
            outfile.write('\n'.join(user_followers))
        print('Finished outputting: {} at {}'.format(username, datetime.now().strftime('%Y/%m/%d %H:%M:%S')))

Tweepy非常聪明,当我们使用wait_on_rate_limit=True时,它可以知道它何时达到了速率限制,并检查它需要睡多久才能重新开始。通过使用wait_on_rate_limit_notify=True,我们允许它粘贴出它将等待多长时间,直到下一次可以获得一个关注者页面(通过这种基于ID的方法,似乎有5000 IDs per page)。在

另外,我们还捕获一个TweepError异常-如果提供的用户名与经过身份验证的用户无权查看的受保护帐户相关,则可能会发生这种情况。在这种情况下,我们只需跳过用户以允许下载其他信息,但打印出一条警告,即用户无法访问。在

运行此命令将为它可以访问的任何用户保存一个follower id文本文件。对我来说,这打印了以下内容:

^{pr2}$

跟随者id asongtoruin(又名me)保存为asongtoruin.txt

有一个可能的问题是,我们的关注页面从最新的开始。如果在调用之间添加新用户,则这会导致输出数据集出现问题,因为我们可能会错过这些用户,并最终在数据集中出现重复。如果出现重复问题,可以将return all_followers更改为return set(all_followers)

相关问题 更多 >

    热门问题