Python Tweepy:我如何查找100多个用户名

Python Tweepy:我如何查找100多个用户名,python,twitter,tweepy,Python,Twitter,Tweepy,您只能使用 api.lookup\u users()方法。使用Tweepy和Python有没有一种简单的方法来检索100多个?我读过这篇文章:但它对解决100多个问题并没有帮助。我是Python的新手,所以我自己无法想出一个解决方案。我尝试的是: users = [] i = 0 num_pages = 2 while i < num_pages: try: # Look up a collection of ids users.append(api

您只能使用
api.lookup\u users()
方法。使用Tweepy和Python有没有一种简单的方法来检索100多个?我读过这篇文章:但它对解决100多个问题并没有帮助。我是Python的新手,所以我自己无法想出一个解决方案。我尝试的是:

users = []
i = 0
num_pages = 2
while i < num_pages:
    try:
        # Look up a collection of ids
        users.append(api.lookup_users(user_ids=ids[100*i:100*(i+1)-1]))
    except tweepy.TweepError:
        # We get a tweep error
        print('Something went wrong, quitting...')
    i = i + 1
users=[]
i=0
页数=2
而i

其中
ids
是一个包含id的列表,但是当我试图获取索引大于100的用户时,我得到了
indexer:list index超出范围。如果有帮助的话,我只对从用户ID获取屏幕名称感兴趣

我没有测试它,因为我没有访问API的权限。
但是,如果您在任何范围内都有一组用户ID,那么这将获取所有这些ID

它首先获取任何剩余的ID,这意味着如果您有一个250个ID的列表,它将获取列表中最后50个ID的50个用户。
然后,它将以数百个用户为单位批量获取剩余的200个用户

from tweepy import api, TweepError

users = []
user_ids = []  # collection of user ids
count_100 = int(len(user_ids) / 100)  # amount of hundred user ids

if len(user_ids) % 100 > 0:
    for i in range(0, count_100 + 1):
        try:
            if i == 0:
                remainder = len(user_ids) % 100
                users.append(api.lookup_users(user_ids=user_ids[:-remainder]))
            else:
                end_at = i * 100
                start_at = end_at - 100
                users.append(api.lookup_users(user_ids=user_ids[start_at:end_at]))

         except TweepError:
             print('Something went wrong, quitting...')

你是对的,你需要将100条tweets分批发送到API,但是你忽略了一个事实,那就是你可能没有100条tweets的确切倍数。请尝试以下操作:

import tweepy

def lookup_user_list(user_id_list, api):
    full_users = []
    users_count = len(user_id_list)
    try:
        for i in range((users_count / 100) + 1):
            full_users.extend(api.lookup_users(user_ids=user_id_list[i*100:min((i+1)*100, users_count)]))
        return full_users
    except tweepy.TweepError:
        print 'Something went wrong, quitting...'

results = lookup_user_list(ids, api)
通过取
results=lookup\u user\u list(user\u id,main\u api)
中的最小值,我们确保最后的循环只得到剩余的用户<代码>结果
将是已查找用户的列表

您也可能会达到速率限制-在设置API时,您应该注意让tweepy优雅地捕捉到这些限制,并删除一些繁重的工作,如:

consumer_key = 'X'
consumer_secret = 'X'
access_token = 'X'
access_token_secret = 'X'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)