如何从Tweepy ResultSet中提取信息

8

我该如何与Tweepy结果集进行交互?如何提取信息?它看起来有点像列表或字典,但我在提取特定元素时遇到了麻烦。

import tweepy
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

print(type(api.favorites('twitter')))
Out[1]: <class 'tweepy.models.ResultSet'>

print(api.favorites('twitter'))
Out[2]: Status(favorited=False, source='Twitter for iPhone', in_reply_to_status_id=None, coordinates=None, text='Starting the Twitter chat now. https://t.co[...]

我以前从未处理过ResultSet这样的对象,所以我不确定如何从中提取信息。我注意到它的工作方式有点像列表,因此我可以像这样从列表中获取特定的推文:

print(api.favorites('twitter')[1])

但我无法获取像这样的嵌入元素:
print(api.favorites('twitter')[1][0])
Out[3]: TypeError: 'Status' object does not support indexing

或者像这样:

print(api.favorites('twitter')[1]['favorited'])
Out[4]: TypeError: 'Status' object is not subscriptable

非常感谢您的帮助!

2个回答

6

tweepy.ResultSet是Python list的一个子类,用于处理与Tweepy API相关的结果集:

class ResultSet(list):
    """A list like object that holds results from a Twitter API query."""
ResultSet中的元素可以是不同类型的 - 状态、用户、关系等等。
你特定的ResultSet中的每个元素都是一个Status实例,它允许通过点符号访问Twitter状态属性。请参考此处获取更多信息。
result_set = api.favorites('twitter')
status = result_set[0]
print(status.favorited)

非常感谢!有没有一种方法可以找到我可以使用点符号引用的对象的所有元素?目前,我只是查看打印输出并做笔记,但我想肯定有更好的方法。 - Nate
@Nate 当然,我认为完整的底层JSON对象可以在status._json中找到。 - alecxe
再次感谢@alecxe。对于任何寻找快速答案的人:status._json.keys() - Nate

0

这里我使用 for 循环展示了 resultset。在循环内部,使用 @alecxe 提到的相同方式访问每个对象属性。

# For ex, GET users/lookup API call returns resultset
users = api.lookup_users(screen_names=['StackOverflow,StackExchange'])
# get the length of user and @alecxe mentions
for i in range(len(users)):
    print 'Name - ' + users[i].name
    print 'Bio - ' + users[i].description
    print 'Location - ' + users[i].location
    print 'Joined at - ' + str(users[i].created_at)
    print 'User ID - ' + users[i].id_str
    print ''

输出:

Name - TechCrunch
Bio - Breaking technology news, analysis, and opinions from TechCrunch. Home to Disrupt, TC Sessions, and Startup Battlefield. Got a tip? tips@techcrunch.com
Location - San Francisco, CA
Joined at - 2007-03-07 01:27:09
User ID - 816653

Name - Piwik Analytics
Bio - Piwik is the leading open analytics platform (Web+Mobile). An open alternative to Google Analytics. Privacy is built-in. Tweet about Piwik if you love it!
Location - Planet Earth
Joined at - 2009-06-22 23:47:00
User ID - 49813707

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接