2016-07-02 8 views
0

Ich verwende den folgenden Code, um Tweets zu den unten stehenden Keywords zu erhalten.Twitter Streaming API gibt keine Ergebnisse

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

access_token = "K" 
access_token_secret = "" 
consumer_key = "" 
consumer_secret = "" 

class StdOutListener(StreamListener): 

    def on_data(self, data): 
     print data 
     return True 

    def on_error(self, status): 
     print status.text    

if __name__ == '__main__': 

    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    stream = Stream(auth, l) 


    stream.filter(track=["flyspicejet","jetairways","airindiain","goairlinesindia","airvistara","spicejet","airindia","goairlines","vistara"]) 

Jedoch habe ich dies für ein paar Stunden lief, aber bekam keine Ergebnisse! Wie kann es möglich sein, dass nicht einmal ein einziger Tweet mit diesen Schlüsselwort (beliebt Airlines in Indien) veröffentlicht wurde?

Was mache ich falsch?

Vielen Dank im Voraus.

+0

Haben Sie versucht, mit einem einzelnen Stichwort anfangen? Twitter manuell durchsuchen, um zu sehen, ob Sie irgendwelche Ergebnisse erwartet haben sollten? – jonrsharpe

+0

Ja. Ich tat. Ich habe sogar meinen Freund gebeten zu tweeten. Auch ich habe es für ein paar Stunden eingeschaltet. – ihmpall

Antwort

0

Sie geben die Fehler nicht korrekt weiter. Versuchen Sie, den folgenden Code:

Python 3 Version:

import time 
import argparse 
import os 
import sys 
import json 

#Import the necessary methods from tweepy library 
from tweepy.streaming import StreamListener 
from tweepy import OAuthHandler 
from tweepy import Stream 
from http.client import IncompleteRead 


access_token = "acc token here" 
access_token_secret = "acc token secret" 
consumer_key = "consumer key" 
consumer_secret = "consumer secret here" 

class StdOutListener(StreamListener): 
    '''A basic listener that just writes received tweets to file.''' 

    def __init__(self, outputfile): 
     self.file = outputfile 

    def on_data(self, data): 
     with open(self.file, 'a') as ofile: 
      #simply write everything to file as raw json 
      ofile.write(data) 
     return True 

    def on_error(self, status): 
     print(status) 


if __name__ == '__main__': 
    parser = argparse.ArgumentParser() 
    requiredArgs = parser.add_argument_group('must need arguments') 
    requiredArgs.add_argument('-o', '--output', help='Output txt file to write tweets', required=True) 
    args = parser.parse_args() 

    filepath = os.getcwd() + os.path.sep + args.output 
    if os.path.exists(filepath): 
     sys.exit("output file already exists; Give new filename!") 
    else: 
     #create an empty file 
     open(args.output,'a').close() 

    l = StdOutListener(args.output) 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 

    keyword_list = ['Computer Science', 'Cancer', 'Germany', 'Paris'] 

    while True: 
     try: 
      stream = Stream(auth, l) 
      stream.filter(track=keyword_list, stall_warnings=True) 

     except IncompleteRead as e: 
      # Oh well, sleep sometime & reconnect and keep trying again 
      time.sleep(15) 
      continue 

     except KeyboardInterrupt: 
      stream.disconnect() 
      break