如何使用 tweepy 流式传输 Twitter 提及?
Posted
技术标签:
【中文标题】如何使用 tweepy 流式传输 Twitter 提及?【英文标题】:How to stream twitter mentions with tweepy? 【发布时间】:2015-01-22 18:59:22 【问题描述】:我目前正在使用以下代码,它会获取推文,然后将其传递给一个处理函数。虽然这不是实时的。
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
mentions = api.mentions_timeline(count=1)
for mention in mentions:
processText()
我也研究过流式推文,但我还没有找到一种流式提及的方法。
【问题讨论】:
【参考方案1】:您可以使用Streaming API 过滤包含@提及的推文。当您使用 track 参数过滤流时,通过在 track
参数中包含您感兴趣的用户名进行过滤,如下所示:
stream.filter(track=['twitterapi'])
这将实时返回所有包含字符串"twitterapi"
的推文,包括@提及(即"@twitterapi"
)。请参阅Twitter Streaming API track
parameter 了解其工作原理。然后,您可以使用结果 JSON 仅获取实际 @提及您感兴趣的用户的推文。结果 JSON 如下所示:
"retweet_count":0,"text":"Man I like me some @twitterapi","entities":"urls":[],"hashtags":[],"user_mentions":["indices":[19,30],"name":"Twitter API","id":6253282,"screen_name":"twitterapi","id_str":"6253282"],"retweeted":false,"in_reply_to_status_id_str":null,"place":null,"in_reply_to_user_id_str":null,"coordinates":null,"source":"web","in_reply_to_screen_name":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"contributors":null,"geo":null,"truncated":false,"created_at":"Wed Feb 29 19:42:02 +0000 2012","user":"is_translator":false,"follow_request_sent":null,"statuses_count":142,"profile_background_color":"C0DEED","default_profile":false,"lang":"en","notifications":null,"profile_background_tile":true,"location":"","profile_sidebar_fill_color":"ffffff","followers_count":8,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/1540298033\/phatkicks_normal.jpg","contributors_enabled":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/365782739\/doof.jpg","description":"I am just a testing account, following me probably won't gain you very much","following":null,"profile_sidebar_border_color":"C0DEED","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1540298033\/phatkicks_normal.jpg","default_profile_image":false,"show_all_inline_media":false,"verified":false,"profile_use_background_image":true,"favourites_count":1,"friends_count":5,"profile_text_color":"333333","protected":false,"profile_background_image_url":"http:\/\/a3.twimg.com\/profile_background_images\/365782739\/doof.jpg","time_zone":"Pacific Time (US & Canada)","created_at":"Fri Sep 09 16:13:20 +0000 2011","name":"fakekurrik","geo_enabled":true,"profile_link_color":"0084B4","url":"http:\/\/blog.roomanna.com","id":370773112,"id_str":"370773112","listed_count":0,"utc_offset":-28800,"screen_name":"fakekurrik","id":174942523154894848,"id_str":"174942523154894848"
这是一团糟,但如果您查看"entities"
对象,您会看到"user_mentions"
:
"user_mentions":["indices":[19,30],"name":"Twitter API","id":6253282,"screen_name":"twitterapi","id_str":"6253282"]
然后,在"screen_name"
下,您会看到"twitterapi"
,这表明用户@twitterapi 被@提及。
【讨论】:
以上是关于如何使用 tweepy 流式传输 Twitter 提及?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python Tweepy 的 Twitter 流 API
Twitter 流式处理脚本在推文的位置字段上抛出一个 keyerror