如何使用Twython从twitter搜索或流媒体api中获得100多条tweet



我如何使用Twython检索所有提到的推文,例如"#Accounting"在纽约说?

我使用了Twitter搜索API,但只允许获得100条tweet。

然后我尝试使用Twitter流媒体过滤器API,但无法通过地理位置缩小范围,似乎要花很长时间。我读到我们应该把所有的推文放入一个数据库,然后在那里进行聚合,但我想知道是否有其他方法可以快速完成一些事情。

下面是我的代码:
from twython import Twython
TWITTER_APP_KEY = 'XXXX'
TWITTER_APP_KEY_SECRET = 'XXXX'
TWITTER_ACCESS_TOKEN = 'XXXX'
TWITTER_ACCESS_TOKEN_SECRET = 'XXXX'
t = Twython(app_key=TWITTER_APP_KEY, 
            app_secret=TWITTER_APP_KEY_SECRET, 
            oauth_token=TWITTER_ACCESS_TOKEN, 
            oauth_token_secret=TWITTER_ACCESS_TOKEN_SECRET)
search = t.search(q='#Accounting', 
                    geocode='-74,40,-73,41',
                    since_id='1',
                    max_id='504082008759488512'
                  )
tweets = search['statuses']
count=0
for tweet in tweets:
    count+=1
    print tweet['id_str'], 'n', tweet['text'], 'nnn'
print count

这里是我的代码流API:

from twython import TwythonStreamer
APP_KEY = 'XXXX'
APP_SECRET = 'XXXX' 
OAUTH_TOKEN = 'XXXX'
OAUTH_TOKEN_SECRET = 'XXXX'
class MyStreamer(TwythonStreamer):
  tweets=[] 
  def on_success(self, data):
    if 'text' in data:
        tweet= data['text'].encode('utf-8')
        if 'Accounting' in tweet:
          tweets.append(tweet)
          print tweet
  def on_error(self, status_code, data):
    print status_code
    self.disconnect()
stream = MyStreamer(APP_KEY, APP_SECRET,
                    OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
stream.statuses.filter(location=['-74,40,-73,41'])

谢谢

一次只能查询100个,但是您可以声明查询应该从哪个ID开始(或大于或小于哪个ID)。

因此,您要做的是运行第一个100,然后查找最低的ID并运行另一个查询,这次将该ID(小于1)设置为最大ID。这将返回下一个100,您将其附加到前面的结果。

你可以根据Twitter的速率限制来运行这个循环。

如果你想获得最新的tweets,你应该使用t.t setmaxid()或t.t setsinceid()分别设置为低于或高于当前的最低/最高ID。

Per https://dev.twitter.com/docs/api/1.1/get/search/tweets

可选

每个页面返回的tweet数,最多100条。默认为15。这是以前的"rpp"。参数

取值样例:100

看起来您最多只能检索100个:(

最新更新