今日のPythonスクリプト - Twitterフォロワー数の一括取得 -
アクセストークンはTwitter Developerに申請し、APPを作成した後に取得できる。
また、読み込み用のCSVファイルには、"ID"項目(Twitterのスクリーン名に該当)を設けること。
import requests import csv import sys import traceback from datetime import datetime ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXX' if __name__ == "__main__": try: print('[Start] {}'.format(datetime.now().strftime('%Y/%m/%d %H:%M:%S'))) data = [] headers = {'Authorization': 'Bearer {}'.format(ACCESS_TOKEN)} # Read CSV file with open(sys.argv[1], newline='', encoding='utf-8') as file: for idx, record in enumerate(csv.DictReader(file)): params = {'screen_name': record['ID']} resp = requests.get('https://api.twitter.com/1.1/users/show.json', headers=headers, params=params) if resp.status_code != 200: print('[Error] screen_name: {}, status_code: {}, code: {}, message: {}'.format( record['ID'], resp.status_code, resp.json()['errors'][0]['code'], resp.json()['errors'][0]['message'] )) else: data.append({ 'screen_name': resp.json()['screen_name'], 'name': resp.json()['name'], 'followers_count': resp.json()['followers_count'] }) # Output CSV file if len(data) > 0: with open(sys.argv[2], 'w', newline='', encoding='utf-8') as file: writer = csv.DictWriter(file, data[0].keys()) writer.writeheader() writer.writerows(data) print('[End] {}'.format(datetime.now().strftime('%Y/%m/%d %H:%M:%S'))) exit(0) except Exception as e: print(traceback.format_exc()) print('[End] {}'.format(datetime.now().strftime('%Y/%m/%d %H:%M:%S'))) exit(1)