2016-06-16 24 views
0

TwitterでHousingWireのすべてのツイートを取得したい(https://twitter.com/HousingWire)私はツイッターアカウントの認証方法を理解しましたが、HousingWireのツイートをどうやって得ることができますか?Pythonを使用してTwitter APIからツイートを抽出する

私はキーワードに基づいてデータをストリーミングする方法を知っていますが、私はHousingWireツイートをストリーミングしたいと思います。どのように私はそれを行うことができますか?

import time 
from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 

ckey='' 
csecret='' 
atoken='' 
asecret='' 

class listener(StreamListener): 
    def on_data(self,data): 
     try: 
      print data 

      #tweet=data.split(',"text":"')[1].split('","source')[0] 
      #print tweet 
      #savethis=str(time.time())+'::'+tweet 
      savefile=open('tweetdb.txt','a') 
      savefile.write(data) 
      savefile.write('\n') 
      savefile.close() 
      return True 
     except BaseException,e: 
      print 'failed on data',str(e) 
      time.sleep(5) 

    def on_error(self,status): 
     print status 

auth=OAuthHandler(ckey,csecret) 
auth.set_access_token(atoken,asecret) 
twitterStream=Stream(auth,listener()) 
twitterStream.filter(track=["stock"]) 

答えて

4

あなたはHousingWireから最後の3240件のツイートをつかむためにPythonスクリプトの下に使用することができますが( - 完全な履歴をつかむための方法はありませんのTwitterは、ユーザーからの多くのツイートへのアクセスを可能にします)。使用法:Twitterの画面名をスクリプトに入力するだけです。

#!/usr/bin/env python 
# encoding: utf-8 

import tweepy #https://github.com/tweepy/tweepy 
import csv 

#Twitter API credentials 
consumer_key = "" 
consumer_secret = "" 
access_key = "" 
access_secret = "" 


def get_all_tweets(screen_name): 
    #Twitter only allows access to a users most recent 3240 tweets with this method 

    #authorize twitter, initialize tweepy 
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_key, access_secret) 
    api = tweepy.API(auth) 

    #initialize a list to hold all the tweepy Tweets 
    alltweets = [] 

    #make initial request for most recent tweets (200 is the maximum allowed count) 
    new_tweets = api.user_timeline(screen_name = screen_name,count=200) 

    #save most recent tweets 
    alltweets.extend(new_tweets) 

    #save the id of the oldest tweet less one 
    oldest = alltweets[-1].id - 1 

    #keep grabbing tweets until there are no tweets left to grab 
    while len(new_tweets) > 0: 
     print "getting tweets before %s" % (oldest) 

     #all subsiquent requests use the max_id param to prevent duplicates 
     new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest) 

     #save most recent tweets 
     alltweets.extend(new_tweets) 

     #update the id of the oldest tweet less one 
     oldest = alltweets[-1].id - 1 

     print "...%s tweets downloaded so far" % (len(alltweets)) 

    #transform the tweepy tweets into a 2D array that will populate the csv 
    outtweets = [[tweet.id_str, tweet.created_at, tweet.text.encode("utf-8")] for tweet in alltweets] 

    #write the csv 
    with open('%s_tweets.csv' % screen_name, 'wb') as f: 
     writer = csv.writer(f) 
     writer.writerow(["id","created_at","text"]) 
     writer.writerows(outtweets) 

    pass 


if __name__ == '__main__': 
    #pass in the username of the account you want to download 
    get_all_tweets("J_tsar") 
+1

ありがとうございました。その作業は現在完了しました。 –

+0

スタックオーバーフローを歓迎します。この回答または他の誰かがあなたの問題を解決した場合は、それを合格とマークしてください。 – Jaxian

関連する問題