Попытка написать твиты (из потока) в CSV - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь транслировать 10 твитов, отслеживая определенную тему, в этом примере я отслеживаю "Трампа".Приведенный ниже код работает, так как он возвращает 10 статусов, но записывает только один из статусов в CSV и, что еще более странно, записывает его 10x и в случайной части строки 400, подобной CSV, например.

Что я делаю не так?

import setup
import csv
import tweepy
from tweepy import StreamListener


class Streamer(StreamListener):
    def __init__(self):
        super().__init__()
        self.counter = 0
        self.limit = 10

    def on_status(self, status):
        statuses = []

        if status.retweeted or "RT @" in status.text:
            return
        while len(statuses) < self.limit and status.lang == "en":
            self.counter += 1
            print(status)
            statuses.append(status)
            with open("my_csv_file", "a") as f:    
                writer = csv.writer(f)
                for status in statuses:
                    writer.writerow([status.user.screen_name, status.text,   status.created_at, status.user.location,
                                    status.id_str])

        if len(statuses) == self.limit:
            print("*** Limit of " + str(self.limit) + " met ***")
            return False
        if len(statuses) > self.limit:
            streaming.disconnect()


streaming = tweepy.Stream(auth=setup.api.auth, listener=Streamer())

stream_data = streaming.filter(track=["Trump"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...