Tweepy:我如何查找超过100个用户屏幕名称

时间:2017-05-04 12:26:52

标签: python twitter tweepy

你只能使用retrieve 100 user objects per request api.lookup_users()方法。有没有一种简单的方法可以使用Tweepy和Python检索超过100个?我已经阅读了这篇文章:User ID to Username tweepy但它对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

其中ids是一个包含id的列表,但当我尝试获得索引高于100的用户时,我得到IndexError: list index out of range。如果它有帮助我只对从中获取屏幕名称感兴趣用户ID。

1 个答案:

答案 0 :(得分:0)

我没有测试过,因为我无法访问API 但是如果你有任何范围内的用户ID集合,这应该取得所有这些。

它首先获取任何剩余部分,这意味着如果您有250个ID的列表,它将获取50个用户,列表中包含最后50个ID。
然后它将批量获取剩下的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...')