问题描述
我正在尝试从时间轴中创建一个推特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
返回 ResultSet
个 Status
对象。您可以将其用作 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,它具有 id
、name
和 followers_count
属性.