0

내 목표는 뉴욕의 2017 년 1 월 전체 낡은 트윗을 추출하는 것입니다 ('위치': '- 74,40, -73,41'). 파이썬을 사용합니다. 다음 코드를 사용하여 실시간 스트리밍 트윗을 가져올 수 있습니다.지리적 위치 필터를 사용하여 트위터 스트리밍 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 

그러나 이것은 내가 원하는 것이 아닙니다. 누군가가 트위터 스트리밍 API 또는 파이썬의 다른 패키지를 사용하여이 위치 필터의 오래된 트윗을 추출하는 방법을 제안 할 수 있습니까? 감사합니다.

+0

짹짹 ID는 시간적 위치와 같습니다. 주어진 ID보다 오래된 트윗 만 검색하도록 검색을 제한 할 수 있습니까? 나는'max_id' 인자가 있다고 생각합니다. – Kanak

답변

2

Twitter의 REST API를 사용하여 요청한 부분을 달성 할 수 있습니다. 다음은 스트리밍에 사용한 TwitterAPI 패키지를 사용하는 예입니다. 그러나 오래된 트윗을 검색 할 때 몇 가지 제한이 있습니다. 약 일주일 동안 낡은 트윗 만받을 수 있습니다. 또한 은 사용자가 위치를 제공하는지 여부와 관계없이 검색 문자열 (q 매개 변수 포함)을 제공해야합니다. 문자열과 위치가 일치하는 결과 만 표시됩니다. 스트리밍 할 때 필터 문자열이나 위치 또는 둘 다를 제공 할 수 있습니다. 이 경우 결과는 문자열이나 위치와 일치 할 수 있지만 반드시 둘 다 일치 할 수는 없습니다.

대략 1 주일 제한에 도달 할 때까지이 코드는 트윗을 다운로드합니다. 트위터의 속도 제한을 초과하지 않도록 시간을 잰 연속적인 요청을함으로써이를 수행합니다. 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)