【问题标题】:Accessing Twitter Data: API/Cursor (twitter user) vs Streaming (hash_tag_list)访问 Twitter 数据:API/光标(Twitter 用户)与流式处理(hash_tag_list)
【发布时间】:2020-10-12 05:35:32
【问题描述】:

我正在研究访问 Twitter 数据的代码。该代码由展示如何访问 youtube 中的 twitter 数据的人编写。

请看下面的代码(有些部分被截断了):

from tweepy import API 
from tweepy import Cursor
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
 
import twitter_credentials
import numpy as np
import pandas as pd

class TwitterClient():
    def __init__(self, twitter_user=None):
        self.auth = TwitterAuthenticator().authenticate_twitter_app()
        self.twitter_client = API(self.auth)
        self.twitter_user = twitter_user
    def get_user_timeline_tweets(self, num_tweets):
        tweets = []
        for tweet in Cursor(self.twitter_client.user_timeline, id=self.twitter_user).items(num_tweets):
            tweets.append(tweet)
        return tweets        

class TwitterAuthenticator():
    def authenticate_twitter_app(self):
        auth = xxxx
        return auth

class TwitterStreamer():
    """
    Class for streaming and processing live tweets.
    """
    def __init__(self):
        self.twitter_autenticator = TwitterAuthenticator()    
    def stream_tweets(self, fetched_tweets_filename, hash_tag_list):
        # This handles Twitter authetification and the connection to Twitter Streaming API
        listener = TwitterListener(fetched_tweets_filename)
        auth = self.twitter_autenticator.authenticate_twitter_app() 
        stream = Stream(auth, listener)

        # This line filter Twitter Streams to capture data by the keywords: 
        stream.filter(track=hash_tag_list)


class TwitterListener(StreamListener):
     xxxxxxx

if __name__ == '__main__':

    hash_tag_list = ["donal trump", "hillary clinton", "barack obama", "bernie sanders"]
   
    twitter_client = TwitterClient('COVID19')
    print(twitter_client.get_user_timeline_tweets(1))
    twitter_streamer=TwitterStreamer()    
    twitter_streamer.stream_tweets(      
    fetched_tweets_filename, hash_tag_list)

从代码中,我想知道为什么要创建两个类TwitterClient() 和TwitterStreamer()TwitterStreamer()hashtag 列表一起使用,而 TwitterClient()user specific。这是否意味着TwitterStreamer() 更像是一个大规模搜索,而TwitterClient() 是更具体的用户。为什么要把它们一分为二?为什么只对hashtags 使用TwitterStreamer() 类?

由于我是 twitter 数据探索的新手,有人可以评论一下这段代码吗?

非常感谢

【问题讨论】:

    标签: python-3.x twitter tweepy


    【解决方案1】:

    这里的简短回答是这两个不同的类正在访问不同的端点 - 也就是,它们正在提取不同的数据。

    TwitterClient() 的魔力发生在get_user_timeline 部分。这是数据收集发生的地方。此方法访问user_timeline 端点,该端点迭代地拉出多达 3,200 条推文(从该用户最近的推文开始,时间倒退)。

    TwitterStreamer() 类具有stream_tweets 方法,该方法使用stream.filter(track=hash_tag_list) 行访问Twitter 的Filter 端点。这只会提取包含您传递给它的主题标签(或许多其他过滤器 - 例如单词、短语、用户)的推文,并且它是实时进行的。也就是说,您会在发送推文时收到推文,而不是及时返回以获取已发布的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2015-03-06
      • 2011-12-26
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多