2017-10-21 6 views
0

私は、カスタム検索クエリによってさえずりをこすりするために、このPythonコードを見つけました:python scraperを使用してCSVに結果を保存するには?

https://github.com/tomkdickinson/Twitter-Search-API-Python/blob/master/TwitterScraper.py

私はcsvファイルにこのコードからの結果を格納します。

私は空白の

def save_tweets(self, tweets): 
    """ 
    Just prints out tweets 
    :return: True always 
    """ 
    for tweet in tweets: 
     # Lets add a counter so we only collect a max number of tweets 
     self.counter += 1 
     if tweet['created_at'] is not None: 
      t = datetime.datetime.fromtimestamp((tweet['created_at']/1000)) 
      fmt = "%Y-%m-%d %H:%M:%S" 
      myCsvRow = log.info("%i [%s] - %s" % (self.counter, t.strftime(fmt), tweet['text'])) 
      fd = open('document.csv','a') 
      fd.write(myCsvRow) 
      fd.close() 

    return True 

としての私の検索クエリごとのようにツイートが、csvファイルの結果を出力し、forループの周りのライン245内でのCSVライターを追加しようとした。また、内のコメントがあります次のような170行目のコード:

@abstractmethod 
def save_tweets(self, tweets): 
    """ 
    An abstract method that's called with a list of tweets. 
    When implementing this class, you can do whatever you want with these tweets. 
    """ 

このクラスを使用してツイートを保存するにはどうすればよいですか?

答えて

1

あなたの問題はラインのように見える:あなたが使用しているのGitHubページのコードを見てみると

myCsvRow = log.info("%i [%s] - %s" % (self.counter, t.strftime(fmt), tweet['text'])) 

、私はlogはPythonのロガーで見ることができます。 log.infoの目的は、どこかに与えられた文字列(例えば、コンソール、ファイル、またはこれらの場所または他の場所の任意の組み合わせ)を書き込むことです。値を返さないので、myCsvRowは空になります。何をしたい

が可能性が高いです。

myCsvRow = "%i [%s] - %s" % (self.counter, t.strftime(fmt), tweet['text']) 

その上のカップルのノート、けれども:

(1)あなたは=(CSVをするために共通である、エントリ間CSVをコンマを入れていませんカンマで区切られた値)

(2)フィールドの1つがカンマを含む可能性のあるテキストフィールドである場合、実際にはcsv行を書き出すことは危険です。そのままテキストを書き出すだけであれば、ツイート自体のカンマは、CSVを解釈しているすべての行に余分なCSVフィールドがあると考えるようになります。幸いなことに、pythonにはcsvライブラリが付属しています。これらのライブラリは、この種の問題を避けるのに役立ちます。

+0

答えとヒントをありがとう! –

関連する問題