1

1500ツイートを取得する方法は?ページパラメータを試してみたところ、これが機能しておらず、max_idとsince_idでスタックしていることがわかりました。max_idとsince_idがわかりません。クエリを作成する場合、クエリが送信されてからの最新の1500件のツイートを取得したいと思います。これが私のコードです:

# -*- coding: utf-8 -*-
import urllib
import simplejson

def searchTweets(query):
 search = urllib.urlopen("http://search.twitter.com/search.json?q="+query)
 dict = simplejson.loads(search.read())
 counter = 0
 for result in dict["results"]: 
  print "*",result["text"].encode('utf-8')
  counter += 1
 print "\n",counter," tweets found","\n" 

searchTerm = "steak"
searchTweets(searchTerm+"&rpp=100&page=15")

誰かが解決策を知っていますか?

4

1 に答える 1

1

1200ツイートでこれが機能するようになりました:

# -*- coding: utf-8 -*-
import urllib
import simplejson

def searchTweets(query, minimum_tweets):
  results = []
  i=0
  while len(results)<minimum_tweets:
    if i==0: # First time through don't include max id
        response = urllib.urlopen("http://search.twitter.com/search.json?q="+query+"&rpp=100")
    else: # Subsequent times include max id
        response = urllib.urlopen("http://search.twitter.com/search.json?q="+query+"&rpp=100&max_id="+max_id)
    response = simplejson.loads(response.read())
    if not response['results']: break # Break if no tweets are returned
    max_id = str(long(response['results'][-1]['id_str'])-1) # Define max_id for next iteration
    results.extend(response['results']) # Extend tweets to results array
    i += 1

  print "\n",len(results)," tweets found","\n" 

searchTerm = "steak"
searchTweets(searchTerm, 1200)

それに関する問題は、検索Twitter APIがかなり頻繁に壊れ、エラー処理がないか、ここで再試行することです。ただし、max_idの背後にあるロジックが表示されるはずです。max_idを最後にプルされたツイートのIDより1小さくするので、繰り返しはありません。

また、URLにmax_idを含めるかどうかを決定するためのより洗練された方法が間違いなくあります。この解決策は、max_idにデフォルト値がないためです(私は:pを望んでいました)

于 2012-08-23T15:26:11.277 に答える