🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2766閲覧

twitterAPI フォロワー情報取得時のエラー解決をしたい

tein_5855

総合スコア1

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/23 12:27

前提・実現したいこと

フォロワー情報一覧の取得をしている途中に、下記のエラーが発生し停止してしまいました。
エラーとなった対象のスキップ等で処理の完遂をしたく思います。
どのような対応を取れば良いかご教授いただけませんでしょうか。

発生している問題・エラーメッセージ

TweepError Traceback (most recent call last) <ipython-input-3-2e326e8711d8> in <module> 15 for followerID in followerIDs: 16 followerData = {} ---> 17 data = api.get_user(followerID) 18 followerData["ID"] = data.screen_name 19 followerData["Name"] = data.name ~\anaconda3\envs\test\lib\site-packages\tweepy\binder.py in _call(*args, **kwargs) 250 return method 251 else: --> 252 return method.execute() 253 finally: 254 method.session.close() ~\anaconda3\envs\test\lib\site-packages\tweepy\binder.py in execute(self) 232 raise RateLimitError(error_msg, resp) 233 else: --> 234 raise TweepError(error_msg, resp, api_code=api_error_code) 235 236 # Parse the response payload TweepError: [{'code': 63, 'message': 'User has been suspended.'}]

該当のソースコード

Python

1CONSUMER_KEY = "*****" 2CONSUMER_SECRET = "*****" 3ACCESS_TOKEN = "*****" 4ACCESS_TOKEN_SECRET = "*****" 5 6import tweepy 7auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 8auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) 9api = tweepy.API(auth,wait_on_rate_limit = True) 10 11search_id = "XXXXX" 12 13followerIDs = tweepy.Cursor(api.followers_ids,id = search_id,cursor = -1).items() 14followerDatas = [] 15for followerID in followerIDs: 16 followerData = {} 17 data = api.get_user(followerID) 18 followerData["ID"] = data.screen_name 19 followerData["Name"] = data.name 20 followerData["Follow"] = data.friends_count 21 followerData["Follower"] = data.followers_count 22 followerData["Description"] = data.description 23 followerData["TweetCount"] = data.statuses_count 24 followerDatas.append(followerData) 25 print(followerData) 26 27import pandas as pd 28pd.set_option("display.max_rows", 1000) 29df = pd.DataFrame(followerDatas).loc[:,["ID","Name","Follow","Follower","TweetCount","Description"]] 30 31df.to_csv(follower_list + ".csv")

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのエラーの場合、取得しようとしたユーザーIDのアカウントが凍結されていることを示します。

例外処理を使い、エラーが発生した場合はスキップしてforループに戻る方法があります。

python

1 2() 3for followerID in followerIDs: 4 followerData = {} 5 try: 6 data = api.get_user(followerID) 7 except tweepy.TweepError as e: 8 print(str(e)) 9 continue 10 followerData["ID"] = data.screen_name 11 followerData["Name"] = data.name 12 followerData["Follow"] = data.friends_count 13 followerData["Follower"] = data.followers_count 14 followerData["Description"] = data.description 15 followerData["TweetCount"] = data.statuses_count 16 followerDatas.append(followerData) 17 print(followerData) 18()

投稿2020/11/23 12:39

編集2020/11/23 12:40
sfdust

総合スコア1137

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tein_5855

2020/11/24 13:41

ご教授ありがとうございます。 処理はまだ完了していませんが、該当の個所は問題なくスキップされました。 大変助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問