首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tweepy:我怎么能查到100多个用户名?

Tweepy:我怎么能查到100多个用户名?
EN

Stack Overflow用户
提问于 2017-05-04 12:26:51
回答 2查看 1.6K关注 0票数 0

您只能使用每个请求检索100个用户对象方法进行api.lookup_users()。是否有一种使用Tweepy和Python检索100多条信息的简单方法?我读过这篇文章:用户ID到用户名tweepy,但它对100多个问题没有帮助。我在Python方面非常新手,所以我无法自己想出一个解决方案。我试过的是:

代码语言:javascript
运行
复制
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是一个包含is的列表,但是当我试图获得索引大于100的用户时,我会得到IndexError: list index out of range。如果有帮助的话,我只对从用户ids获取屏幕名称感兴趣。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-04 14:52:31

您是正确的,您需要将tweet以100的批次发送到API,但是您忽略了这样一个事实,即您可能没有100条tweet的确切倍数。尝试以下几点:

代码语言:javascript
运行
复制
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_user_list(user_ids, main_api)的最小值,我们确保最后的循环只得到剩余的用户。results将是查找用户的列表。

您还可能达到速率限制--在设置API时,应该注意让tweepy优雅地捕获这些API,并删除一些艰苦的工作,如下所示:

代码语言:javascript
运行
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2017-05-04 13:56:08

我没有测试它,因为我没有访问API。

但是,如果在任何范围内都有一个用户if集合,则应该会获取所有这些if。

它首先获取任何余数,这意味着如果您有一个包含250个in的列表,它将获取50个用户,其中最后50个in在列表中。

然后,它将抓取其余的200名用户,分批数百人。

代码语言:javascript
运行
复制
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...')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43782889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档