2016-06-16 17 views
0

Ich möchte jeden Tweet des HousingWire auf Twitter (https://twitter.com/HousingWire) bekommen. Ich habe verstanden, wie ich mich im Twitter-Account authentifizieren kann, aber wie kann ich den Tweet von HousingWire bekommen?extrahieren Tweet von Twitter API mit Python

Ich weiß, wie man die Daten basierend auf den Keywords streamen, aber ich möchte den HousingWire Tweet streamen. Wie kann ich das machen?

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"]) 

Antwort

4

Sie können die folgenden Python-Skript verwenden, um die letzten 3.240 Tweets von HousingWire zu greifen (Twitter erlaubt nur den Zugriff auf, dass viele Tweets von einem Benutzer - keine Möglichkeit, die komplette Geschichte zu greifen). Verwendung: Geben Sie einfach ihren Twitter-Bildschirmnamen in das Skript ein.

#!/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

Danke, es funktioniert jetzt :) –

+0

Glücklich zu helfen, und willkommen zu Stack Overflow! Wenn diese Antwort oder eine andere Lösung Ihr Problem behoben hat, markieren Sie es als akzeptiert. – Jaxian

Verwandte Themen