【问题标题】:Pulling information about a Tweet using a Tweet ID and the Tweepy API使用 Tweet ID 和 Tweepy API 提取有关 Tweet 的信息
【发布时间】:2020-08-14 03:20:51
【问题描述】:

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

代码的第一部分有效,并从我的时间线上的推文中创建了一个推文 ID 列表,这些推文在 12 到 36 小时之间。我需要这样做,因为我计算最受欢迎推文的逻辑取决于点赞和转发的数量,所以如果我在过去 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

然后我尝试遍历此推文 ID 列表以提取有关每个推文的信息,例如用户名。我正在尝试通过以下方式做到这一点,但不断收到'ResultSet' object has not attribute 'user.id' 错误。

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

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

【问题讨论】:

    标签: python twitter tweepy attributeerror


    【解决方案1】:

    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 属性。

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2016-01-21
      • 2020-11-01
      相关资源
      最近更新 更多