tweepy将推特标签流收集到csv文件

0 投票
1 回答
2424 浏览
提问于 2025-04-18 00:54

我正在尝试运行这个脚本,目的是实时收集某个特定标签的推文,并把它们保存到一个csv文件里。现在我有的这个脚本可以在控制台上打印信息,并创建一个包含作者、日期和文本的csv文件。不过,流式获取的推文并没有被保存到这个csv文件里。

import sys
import tweepy
import csv

#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
    with open('file.csv', 'w') as f: 
                f.write('Author,Date,Text')
                writer = csv.writer(f)
                writer.writerow([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'])

1 个回答

0

你需要在 on_status 外面使用一个全局变量 writer。

比如说(用你的代码举个例子)

class CustomStreamListener(tweepy.StreamListener):
global writer
        writer = csv.writer(open('file.csv', 'w+'))
        w.writerow(('Author', 'Date', 'Text'))
def on_status(self, status): 
    print status.author.screen_name, status.created_at, status.text
    writer.writerow(status.author.screen_name, status.created_at, status.text)

撰写回答