访问 Twitter 数据:API/Cursor(Twitter 用户)与流媒体(hash_tag_list)
Accessing Twitter Data: API/Cursor (twitter user) vs Streaming (hash_tag_list)
我正在研究访问 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)
从代码中,我想知道为什么要创建两个classes TwitterClient(
) 和TwitterStreamer()
? TwitterStreamer()
适用于 hashtag
列表,而 TwitterClient()
是 user specific
。这是否意味着 TwitterStreamer()
更像是大规模搜索,而 TwitterClient()
更针对特定用户。为什么要把他们一分为二?为什么只对 hashtags
使用 TwitterStreamer()
class?
有人可以对这段代码发表评论吗,因为我是 Twitter 数据探索的新手。
非常感谢
这里的简短回答是,这两个不同的 classes 正在访问不同的端点 - 也就是说,它们正在提取不同的数据。
TwitterClient()
的魔力发生在 get_user_timeline
部分。这是数据收集发生的地方。此方法访问 user_timeline
端点,该端点迭代地提取最多 3,200 条推文(从该用户的最新推文开始,及时向后推)。
TwitterStreamer()
class 具有 stream_tweets
方法,该方法使用行 stream.filter(track=hash_tag_list)
访问 Twitter 的过滤器端点。这只会提取包含您传递给它的主题标签(或许多其他过滤器 - 例如单词、短语、用户)的推文,并且它是实时进行的。也就是说,您会在发送推文时收到推文,而不是及时返回以获取已发布的内容。
我正在研究访问 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)
从代码中,我想知道为什么要创建两个classes TwitterClient(
) 和TwitterStreamer()
? TwitterStreamer()
适用于 hashtag
列表,而 TwitterClient()
是 user specific
。这是否意味着 TwitterStreamer()
更像是大规模搜索,而 TwitterClient()
更针对特定用户。为什么要把他们一分为二?为什么只对 hashtags
使用 TwitterStreamer()
class?
有人可以对这段代码发表评论吗,因为我是 Twitter 数据探索的新手。
非常感谢
这里的简短回答是,这两个不同的 classes 正在访问不同的端点 - 也就是说,它们正在提取不同的数据。
TwitterClient()
的魔力发生在 get_user_timeline
部分。这是数据收集发生的地方。此方法访问 user_timeline
端点,该端点迭代地提取最多 3,200 条推文(从该用户的最新推文开始,及时向后推)。
TwitterStreamer()
class 具有 stream_tweets
方法,该方法使用行 stream.filter(track=hash_tag_list)
访问 Twitter 的过滤器端点。这只会提取包含您传递给它的主题标签(或许多其他过滤器 - 例如单词、短语、用户)的推文,并且它是实时进行的。也就是说,您会在发送推文时收到推文,而不是及时返回以获取已发布的内容。