Tweepy Streamer 将推文限制为 140 个字符
Tweepy Streamer Limiting Tweets to 140 Characters
在第一次总统辩论期间,我创建了一个 tweepy 侦听器来将推文收集到本地 MongoDB,但我意识到我一直在收集的推文被限制在 140 个字符以内,而且很多都在 140 时被截断字数限制。在我的流中,我定义了 tweet_mode='extended'
,我认为这可以解决这个问题,但是,我仍然无法检索超过 140 个字符的推文的完整长度。下面是我的代码:
auth.set_access_token(twitter_credentials.ACCESS_TOKEN, twitter_credentials.ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
# Create a listener MyListener that streams and stores tweets to a local MongoDB
class MyListener(StreamListener):
def __init__(self):
super().__init__()
self.list_of_tweets = deque([], maxlen=5)
def on_data(self, data):
try:
tweet_text = json.loads(data)
self.list_of_tweets.append(tweet_text)
self.print_list_of_tweets()
db['09292020'].insert_one(tweet_text)
except:
None
def on_error(self, status):
print(status)
def print_list_of_tweets(self):
display.clear_output(wait=True)
for index, tweet_text in enumerate(self.list_of_tweets):
m='{}. {}\n\n'.format(index, tweet_text)
print(m)
debate_stream = Stream(auth, MyListener(), tweet_mode='extended')
debate_stream = debate_stream.filter(track=['insert', 'debate', 'keywords', 'here'])
任何有关如何通过此侦听器获取完整扩展推文的意见都将不胜感激!
您可以尝试将倒数第二行更改为
debate_stream = Stream(auth, MyListener()).extended_tweet["full_text"]
不确定这是否有效,但请尝试一下。
tweet_mode=extended
对旧版标准流 API 没有影响,因为推文默认以截断 (140) 和扩展 (280) 形式传送。
因此您需要像这样设置您的 Stream Listener:
debate_stream = Stream(auth, MyListener())
你应该看到的是,较长推文的 JSON 对象有一个 140 个字符的 text
字段,但包含一个名为 extended_tweet
的附加字典,它又包含一个full_text
包含完整推文文本的字段。
在第一次总统辩论期间,我创建了一个 tweepy 侦听器来将推文收集到本地 MongoDB,但我意识到我一直在收集的推文被限制在 140 个字符以内,而且很多都在 140 时被截断字数限制。在我的流中,我定义了 tweet_mode='extended'
,我认为这可以解决这个问题,但是,我仍然无法检索超过 140 个字符的推文的完整长度。下面是我的代码:
auth.set_access_token(twitter_credentials.ACCESS_TOKEN, twitter_credentials.ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
# Create a listener MyListener that streams and stores tweets to a local MongoDB
class MyListener(StreamListener):
def __init__(self):
super().__init__()
self.list_of_tweets = deque([], maxlen=5)
def on_data(self, data):
try:
tweet_text = json.loads(data)
self.list_of_tweets.append(tweet_text)
self.print_list_of_tweets()
db['09292020'].insert_one(tweet_text)
except:
None
def on_error(self, status):
print(status)
def print_list_of_tweets(self):
display.clear_output(wait=True)
for index, tweet_text in enumerate(self.list_of_tweets):
m='{}. {}\n\n'.format(index, tweet_text)
print(m)
debate_stream = Stream(auth, MyListener(), tweet_mode='extended')
debate_stream = debate_stream.filter(track=['insert', 'debate', 'keywords', 'here'])
任何有关如何通过此侦听器获取完整扩展推文的意见都将不胜感激!
您可以尝试将倒数第二行更改为
debate_stream = Stream(auth, MyListener()).extended_tweet["full_text"]
不确定这是否有效,但请尝试一下。
tweet_mode=extended
对旧版标准流 API 没有影响,因为推文默认以截断 (140) 和扩展 (280) 形式传送。
因此您需要像这样设置您的 Stream Listener:
debate_stream = Stream(auth, MyListener())
你应该看到的是,较长推文的 JSON 对象有一个 140 个字符的 text
字段,但包含一个名为 extended_tweet
的附加字典,它又包含一个full_text
包含完整推文文本的字段。