2017-03-01 56 views
2

如何与Tweepy结果集进行交互?我如何提取信息?它看起来像一个列表或字典,但我无法提取它的特定元素。如何从Tweepy ResultSet提取信息

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

tweepy.ResultSetsubclass of a Python's list

class ResultSet(list): 
    """A list like object that holds results from a Twitter API query.""" 

ResultSet元素可以是不同类型的 - 状态,用户关系等

每一个元素都在您的特定ResultSetStatus instance,这使得属性访问权限(通过点符号)到twitter状态属性:

result_set = api.favorites('twitter') 
status = result_set[0] 
print(status.favorited) 
+0

感谢一大堆!有没有办法找到我可以用点符号引用的对象的所有元素?目前,我只是查看打印输出并记录下来,但我认为这应该是一个更好的方法。 – Nate

+0

@Nate当然,我认为完整的基础JSON对象可在'status._json'处获得。 – alecxe

+0

再次感谢@alecxe。对于想要快速回答的人:status._json.keys() – Nate

0

这里我使用for循环显示resultset循环。而在for循环中,用同样的方式@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? [email protected] 
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