実現したいこと
前提
twitter apiを用いてユーザータイムラインを収集していたところ,下記のエラーが発生しました.
言語はPythonです.
別でツイート収集のプログラムも使用していたのですが,そちらでも同じエラーが発生します.
発生している問題・エラーメッセージ
Unauthorized: 401 Unauthorized 32 - Could not authenticate you.
該当のソースコード
Python
1import tweepy 2from datetime import datetime,timezone 3import pytz 4import pandas as pd 5 6#Twitterの認証7api_key = "***"8api_secret = "***"9access_key = "***"10access_secret = "***"11auth = tweepy.OAuthHandler(api_key, api_secret)12auth.set_access_token(access_key, access_secret)13api = tweepy.API(auth)14 15#検索条件の設定16screen_name='***'17item_num = 320018 19#検索条件を元にツイートを抽出20tweets =tweepy.Cursor(api.user_timeline,count=200,screen_name=screen_name).items(item_num)21 22#関数: UTCをJSTに変換する23def change_time_JST(u_time):24 #イギリスのtimezoneを設定するために再定義する25 utc_time = datetime(u_time.year, u_time.month,u_time.day, \ 26 u_time.hour,u_time.minute,u_time.second, tzinfo=timezone.utc)27 #タイムゾーンを日本時刻に変換28 jst_time = utc_time.astimezone(pytz.timezone("Asia/Tokyo"))29 # 文字列で返す30 str_time = jst_time.strftime("%Y-%m-%d_%H:%M:%S")31 return str_time 32 33#抽出したデータから必要な情報を取り出す34#取得したツイートを一つずつ取り出して必要な情報をtweet_dataに格納する35tweet_data = []36for tweet in tweets:37 #ツイート時刻とユーザのアカウント作成時刻を日本時刻にする38 tweet_time = change_time_JST(tweet.created_at)39 create_account_time = change_time_JST(tweet.user.created_at)40 #tweet_dataの配列に取得したい情報を入れていく41 tweet_data.append([tweet.id, tweet_time, tweet.text, tweet.favorite_count, tweet.retweet_count])42 #取り出したデータをpandasのDataFrameに変換43 #CSVファイルに出力するときの列の名前を定義44 labels=['ツイートID' ,'ツイート時刻', 'ツイート内容', 'いいね数', 'リツイート数']45 46#tweet_dataのリストをpandasのDataFrameに変換47df = pd.DataFrame(tweet_data,columns=labels)48 49#CSVファイルに出力する50#CSVファイルの名前を決める51file_name='検証用_ツイート.csv'52 53#CSVファイルを出力する54df.to_csv(file_name,encoding='utf-8-sig',index=False)
試したこと
同様のエラーが出ている方がいるか調べましたが,その方も具体的な解決には至っていないようでした
https://qiita.com/tqwko_05/questions/17442873e4c87074a12d
トークンやキーの再生成は試しました.
補足情報(FW/ツールのバージョンなど)
Python3
アクセス権限:Elevated
application permission:Read

0 コメント