我是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'])
答案 0 :(得分:2)
这适用于我,但如果您在评论中遇到问题,请与我联系。
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])
答案 1 :(得分:1)
如果你想这样做,你需要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到该方法获取句柄。
我也会检查this堆叠问题。
你应该小心从Twitter传入的数据,它也可以有逗号。看看这个question,他们解释了如何转义字符串中可能存在的任何逗号。或者当然,你必须逃避每个变量或至少status.text。
答案 2 :(得分:0)
当你说“保存”时,你有没有特定的格式?
我能想到的第一个解决方案就是将你打印的任何内容写入文本文件:
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%正确,但它值得一试。