트위터 API에 대한 반복 요청 샘플

12176 단어 PythonTwittertech

왜 귀속 요청이 필요합니까


무료로 사용할 수 있는 범위라면 트위터 API는 30일 또는fullarchive의sandbox로 바뀌며, 한 요청에 대해 트위터 100개(user timeline 200)만 받을 수 있다.따라서 반환을 요청하는 값은next 영패를 가지고 있습니다.여기에 한 번 더 요청하면 종전 후속으로 100건을 받을 수 있다

어떻게 실현합니까


csv에 저장된 프로젝트를 무시했습니다
  • API에 요청하는 매개변수 정의
  • 요청 포기
  • 반환된 객체 처리
  • next영패가 되돌아오는 대상에 들어가면 다시 이 요청
  • 을 포함합니다
    4에서 귀속 호출을 하는 함수 중 매개 변수에next 영패가 있으면 요청을 취소하는 것으로 정의합니다.

    반복 함수 설정


    def searchWordsRecurrent(from_date, to_date,res = None):
        url = "https://api.twitter.com/1.1/tweets/search/fullarchive/[Twitter AppのENV_NAME].json"
        keyword = "任意のキーワード"
        print('----------------------------------------------------')
        params = {'query' : keyword, 'maxResults' : 100,'fromDate':from_date,'toDate':to_date}
    
        #レスポンスが引数で与えられていたら
        if res is not None:
            params['next'] = res['next']
        result = twitter.get(url, params = params)
    
        #CSVのヘッダーを定義
        header = ['id','User Name','User ID','Follows','Followers','User Location','content','time']
        search_timeline = {}
        if result.status_code == 200:
             with open('sample.csv', 'w') as f:
                 search_timeline = json.loads(result.text)
                 writer = csv.writer(f)
                 writer.writerow(header)
                 for tweet in search_timeline['results']:
    	         date = datetime.strptime(tweet['created_at'],'%a %b %d %H:%M:%S %z %Y')
                     tmp = []
                     tmp.append(tweet['id'])
                     tmp.append(tweet['user']['name'])
                     tmp.append(tweet['user']['screen_name'])
                     tmp.append(tweet['retweet_count'])
                     tmp.append(tweet['favorite_count'])
                     tmp.append(tweet['user']['location'])
                     tmp.append(tweet['text'])
    		 tmp.append(f"{date.year}-{date.month}-{date.day} {date.hour}:{date.minute}:{date.second}")
    
                     writer.writerow(tmp)
                     tmp = []
                 print(len(search_timeline['results']))
        else:
            print("ERROR: %d" % req.status_code)
        if 'next' in search_timeline:
            searchWordsRecurrent(from_date, to_date,search_timeline)
    
        return;
    

    해설


    Premium search full-archive API를 사용하여 특정 키워드를 포함하는 트위터 ID, 트위터 메인(ID, 팔로워, 팔로워수, 위치), 트위터 글, 트위터 시간을 가져옵니다.
    각 요청은 몇 번에서 몇 번까지의 CSV 형식으로 저장됩니다.
    트위터 API는 maxResults에서 연결이 끊기지 않으면 NEXT 토큰에 답장을 하고 있다면 NEXT 토큰을 덧붙여 뒤에서 찾을 수 있다.이하 인용

    공식 설명


    Each Tweet data request contains a 'maxResults' parameter (range 10-500, with a default of 100. Sandbox environments have a maximum of 100) that specifies the maximum number of Tweets to return in the response. When the amount of data exceeds the 'maxResults' setting (and it usually will), the response will include a 'next' token and pagination will be required to receive all the data associated with your query (see the HERE section for more information).

    Twitter API에서 반환된 객체

    좋은 웹페이지 즐겨찾기