如何使用Twython从twitter搜索或流式api获取超过100条推文

时间:2014-05-11 08:49:20

标签: python twitter twython

我如何使用Twython检索在纽约提及的所有推文,例如“#Accounting”?

我使用了Twitter搜索API,但我只能获得100条推文。

然后我尝试使用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'], '\n\n\n'

print count

这是我的Streaming 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'])

由于

2 个答案:

答案 0 :(得分:8)

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

所以你要做的就是运行你的前100个,然后寻找最低的ID并运行另一个查询,这次将该ID(少于1)设置为你的最大ID。这将返回下一个100,您将其附加到之前的结果。

然后,您可以根据Twitter速率限制多次运行此循环。

如果您想获取最新的推文,则应将t.setMaxId()或t.setSinceId()设置为分别低于或高于当前最低/最高ID。

答案 1 :(得分:-1)

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

  

计数可选

     

每页返回的推文数量,最多为100个。默认为15.这是以前的" rpp"旧搜索API中的参数。

     

示例值:100

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