【问题标题】:Twitter Streaming API not giving any resultsTwitter Streaming API 没有给出任何结果
【发布时间】:2016-07-05 05:45:13
【问题描述】:

我正在运行以下代码来获取与以下关键字相关的推文。

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

但是,我运行了几个小时,但没有任何结果!怎么可能连一条带有这些关键字的推文(印度流行航空公司)都没有发布?

我做错了什么?

提前非常感谢。

【问题讨论】:

  • 您是否尝试过从一个关键字开始?手动搜索 Twitter 看看你是否应该期待任何结果?
  • 是的。我做到了。我什至让我的朋友发推文。我也开了几个小时。

标签: python python-2.7 twitter tweepy


【解决方案1】:

您没有正确处理错误案例。试试下面的代码:

Python 3版本:

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

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多