当前位置: 代码迷 >> python >> 将流媒体数据保存为CSV
  详细解决方案

将流媒体数据保存为CSV

热度:99   发布时间:2023-07-16 10:06:01.0

我是Python的新手,我正在尝试将流式Twitter API中的数据保存到CSV文件中。 我可以成功地将内容打印到我的控制台,但我无法保存。

我已经在堆栈上进行了搜索,并且我发现了几个非常接近回答我的问题的例子,但由于我的技能非常有限,我发现没有一个例子非常适应。

我打印到控制台的代码如下:

import sys
import tweepy

#pass security information to variables
consumer_key=""
consumer_secret=""
access_key = ""
access_secret = ""


#use variables to access twitter
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)

#create an object called 'customStreamListener'

class CustomStreamListener(tweepy.StreamListener):

    def on_status(self, status):
        print status.author.screen_name, status.created_at, status.text


    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True # Don't kill the stream

    def on_timeout(self):
        print >> sys.stderr, 'Timeout...'
        return True # Don't kill the stream


streamingAPI = tweepy.streaming.Stream(auth, CustomStreamListener())
streamingAPI.filter(track=['russia'])

这对我有用,但如果您在评论中遇到问题,请告诉我。

import csv
def on_status(self, status): 
    with open('file.txt', 'w') as f: 
        f.write('Author,Date,Text')
        writer = csv.writer(f)
        writer.writerow([status.author.screen_name, status.created_at, status.text])

如果要执行此操作,则需要import csv以将其保存到文件中(因为您的问题是写入csv。

首先,你必须:

import csv

然后你必须打开一个文件写入并创建一个编写器:

handle=csv.writer(open('file.csv','wb'))

我改变了

def on_status(self, status):
    print status.author.screen_name, status.created_at, status.text

这样的事情:

def on_status(self, status):
    print status.author.screen_name, status.created_at, status.text
    handle.writerow(status.author.screen_name, status.created_at, status.text)

当然,你必须将句柄发送给类或者有一些方法来从main到该方法获取句柄。

我也会检查堆栈问题。

你应该小心从Twitter传入的数据,它也可以有逗号。 看看这个他们解释了如何转义字符串中可能存在的任何逗号。 或者当然,你必须逃避每个变量或至少status.text。

当你说“保存”时,你有什么特定的格式吗?

我能想到的第一个解决方案是将您打印的任何内容写入文本文件:

my_file = open("file.txt","w") 
def on_status(self, status):
    a = status.author.screen_name 
    b = status.created_at 
    c = status.text
    my_file.write(a,b,c) 
my_file.close()

我对Python也有点新手,所以这可能不是100%正确,但它值得一试。

  相关解决方案