按关键字 tweepy 过滤推文并保存到 csv

问题描述

我正在尝试查找包含“汽车”一词的推文,在所有这些推文中,我只想要有关突发新闻的推文。我的代码运行良好,但是当我添加突发新闻过滤器时,它只会打印“Tweet with keyword:” found 但不会将推文保存在我的 csv 文件中。

可能是什么问题?感谢您的帮助 - 这是参考代码

from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
from twitter_credentials import consumer_key,consumer_secret,access_token,access_token_secret
import datetime
import csv
import json
from tweepy import Cursor

# consumer key,consumer secret,access token,access secret.
ckey = consumer_key
csecret = consumer_secret
atoken = access_token
asecret = access_token_secret

filterKeywords = ['BREAKING','NEWS','Headline','This just in','News','news','toyota','Toyota']


class Listener(StreamListener):

    def on_status(self,status):
        # Filtering English language tweets from users with more than 500 followers
        if (status.lang == "en"):
            # Creating this formatting so when exported to csv the tweet stays on one line
            tweet_text = "'" + status.text.replace('\n',' ') + "'"
            # Filter for keyword,only write csv if correct keyword(s) found
            for word in filterKeywords:
                if word in tweet_text:
                    csvw.writerow([status.id,status.user.screen_name,# created_at is a datetime object,converting to just grab the month/day/year
                                   status.created_at.strftime('%m/%d/%y'),status.user.followers_count,tweet_text])
                    print("Found tweet by keyword: " + word)
            return True

    def on_error(self,status_code):
        if status_code == 420:
            # returning False in on_error disconnects the stream
            return False


if __name__ == '__main__':
    # This handles Twitter authetification and the connection to Twitter Streaming API
    auth = OAuthHandler(consumer_key,consumer_secret)
    auth.set_access_token(access_token,access_token_secret)
    stream = Stream(auth,Listener())

    # Filter based on listed items
    csvw = csv.writer(open("tweets_data.csv","a",encoding='utf-8'))
    csvw.writerow(['twitter_id','name','created_at','followers_count','text'.encode("utf-8")])
    stream.filter(track=['car'])

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)