使用Tweet ID和Tweepy API提取有关Tweet的信息

问题描述

我正在尝试从时间轴中创建一个推特ID列表,然后提取有关每个推特ID的信息,例如用户名。我最终试图在时间轴上转发最“流行”的推文,我有逻辑可以在其他地方进行计算。

该代码的第一部分起作用,并根据我的时间轴上12至36小时之间的推文创建推文ID的列表。我之所以需要这样做,是因为计算最受欢迎的推文的逻辑取决于喜欢和转发的次数,因此,如果我在过去的12个小时内都这样做,则会偏向于较早的推文。

def create_list(tweet_list):
     for tweet in tweepy.Cursor(api.home_timeline).items():
         tweet_date = tweet.created_at 
         tweet_age_seconds = tweet_date.timestamp()
         tweet_age_hours = tweet_age_seconds / 3600
         if (current_time_hours - tweet_age_hours) > 12 and (current_time_hours - tweet_age_hours) < 36:
             tweet_list.append(tweet.id)
     return tweet_list

然后,我尝试遍历此Tweet ID列表以提取有关每个Tweet的信息,例如用户名。我正在尝试通过以下方法来做到这一点,但是不断获取'ResultSet'对象没有属性'user.id'错误。

for i in enumerate(tweet_list):
    status = api.statuses_lookup(i)
    print(str(status.user.id))

这会导致属性错误。如何选择要从api.statuses_lookup()调用中提取的状态?我最终试图为列表中的每条推文提取user.id,这样便可以看到该用户有多少关注者。

解决方法

API.statuses_lookup 返回 ResultSetStatus 对象。您可以将其用作 Status 对象列表。

这是因为 API.statuses_lookup 使用 GET statuses/lookup 端点,该端点最多为 id 参数接受 100 个不同的 ID。您可以优化您的代码,使每个请求最多传递 100 个,而不是一次传递一个。否则,如果您想获得单个推文,您可以使用 API.get_status,它使用 GET statuses/show/:id 端点。

但是,就您的目的而言,您不需要使用它们。当您在 create_list 内的主页时间轴中循环浏览推文时,您已经拥有 Status 对象。每个 Status/Tweet object 都有一个 user 属性,它是一个 User object,它具有 idnamefollowers_count 属性.

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...