0

私の目的は、ニューヨークの2017年1月全体の古いツイートを抽出することです( 'locations': ' - 74,40、-73,41') Pythonを使用します。ジオロケーションフィルタを使用してTwitterストリーミングAPIを使用して古いツイートを抽出する

import json 
    import pandas as pd 
    import numpy as np 
    from TwitterAPI import TwitterAPI 

    #Set up the variables for the 'application' 
    consumerkey = 'cfKguErYawo2WB7cfNtAT2lKl' 
    consumersecret = 'my_consumer_secret' 
    access_token_key = '2195434704-Wov69oF2iIBRgUjWJhD0KThqcLApYCJXqtbYI4K' 
    access_token_secret = 'my_access_token_secret' 

    #Setup the API key 
    api = TwitterAPI(consumerkey,consumersecret,access_token_key,access_token_secret) 

    # Breaking after extracting 10 live tweets from New York City 

    r = api.request('statuses/filter', {'locations':'-74,40,-73,41'}) 
    for row,item in enumerate(r): 
     print(row, item['text']) 
     if row >= 10: 
      break 

これは私が探しているものではありません。次のコードを使用してライブストリーミングツイートを取得できます。誰かがTwitterのストリーミングAPIやPythonで他のパッケージを使って、この位置フィルタの古いツイートを抽出する方法を提案できますか? ありがとう!

+0

Tweet IDは時間的位置に似ています。特定のIDよりも古いツイートだけを検索するように検索を制限できますか?私は 'max_id'引数があると思います。 – Kanak

答えて

2

TwitterのREST APIを使用して、あなたが求めているものの一部を達成できます。以下は、ストリームに使用したTwitterAPIパッケージを使用する例です。しかし、あなたが古いつぶやきを探しているときにいくつかの制限があります。あなたはたった一週間分の古いツイートを得ることができます。また、は、場所を指定するかどうかにかかわらず、に検索文字列(qパラメータ)を指定する必要があります。文字列と場所の両方に一致する結果しか表示されません。ストリーミングするときは、フィルタ文字列または場所、またはその両方を指定できます。この場合、結果は文字列または場所のいずれかに一致する可能性がありますが、必ずしも両方に一致する必要はありません。

このコードは、おおよそ1週間の制限に達するまで、ツイートをダウンロードします。これは、Twitterのレート制限を超えないようにタイムリーに行われる連続したリクエストを作成することによって行います。 TwitterGeoPicsパッケージが便利な場合もあります。

from TwitterAPI import TwitterAPI, TwitterRestPager 

SEARCH_TERM = 'pizza' 
GEOCODE = '40,74,10km' 

CONSUMER_KEY = '' 
CONSUMER_SECRET = '' 
ACCESS_TOKEN_KEY = '' 
ACCESS_TOKEN_SECRET = '' 

api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET) 

pager = TwitterRestPager(api, 'search/tweets', {'q': SEARCH_TERM, 'geocode':GEOCODE}) 

for item in pager.get_iterator(): 
    print(item['text'] if 'text' in item else item) 
関連する問題