Nat*_*han 2 python twitter python-3.x
使用 Tweepy 流式传输 Twitter 源时,是否可以在 on_data 函数中返回完整的推文文本?
我已经尝试并看到了用于流媒体的 on_status 函数的解决方案。on_status 函数可以通过执行 status.extended_tweet["full_text"] 的操作来返回全文。然而,这似乎不适用于 on_data 函数,而且我还没有看到有人专门针对 on_data 提出这个问题(除非我以某种方式错过了它)。那么这里有人知道是否有任何方法可以使用 on_data 来传输全文推文吗?
我看到有些人说 tweet_mode = 'extended' 可以工作,但我注意到这个解决方案不适用于流式推文。
类 TwitterListener(StreamListener):
def __init__(self, fetchedFeedsFile):
self.fetchedFeedsFile = fetchedFeedsFile
def on_data(self, data):
try:
print(data)
with open(self.fetchedFeedsFile, 'a') as tf:
tf.write(data)
return True
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
if status == 420:
return False
print(status)
Run Code Online (Sandbox Code Playgroud)
我展示的代码使用 on_data 覆盖流式传输推文并输出推文,但它无法返回完整的推文。
由于没有人回答我的问题,我自己做了一些进一步的研究和实验。我可以确认可以使用 on_data 获取全文。如果有人想要使用 on_data 流式传输完整大小的推文,则必须首先访问 on_data 函数返回的 JSON。通常,JSON 将包含一个名为“text”的字符串,其中包含推文,但是如果推文太长(我相信超过 140 个字符?不确定),则会有一个名为“extended_tweet”的字段,其中包含一个名为“full_text”的字符串。下面是我使用的 on_data 覆盖的片段,它成功地将完整大小的推文流式传输到文件。
data = json.loads(data)
try:
tweetStr = data['extended_tweet']['full_text']
except Exception as e:
tweetStr = data['text']
Run Code Online (Sandbox Code Playgroud)
然后你可以将 tweetStr 输出到打印函数、文件或任何你想要的东西中。
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |