は、私は、ユーザーのシリーズのために信者をつかむIDSループの場合は、以下のTweepy
を使用しているforループでブレイク:は、間違った行動
def download_followers(user, api):
all_followers = []
try:
for page in tweepy.Cursor(api.followers_ids, screen_name=user).pages():
all_followers.extend(map(str, page))
return all_followers
except tweepy.TweepError:
print('Could not access user {}. Skipping...'.format(user))
関数は次のように呼ばれた:
for username in lookup_users:
user_followers = download_followers(username, main_api)
if user_followers:
new_followers = pd.DataFrame({
"Handles": username,
"Follower_ID": user_followers,
"Start_Date": today})
new_followers_df = new_followers_df.append(new_followers)
print('Finished outputting: {} at {}'.format(username, datetime.now().strftime('%Y/%m/%d %H:%M:%S')))
は、各user
が持つかもしれない信者の量に応じて、Twitter's API
はuser's followers
すべてをつかむために2回または3回呼び出すことが必要になる場合があります。
したがって、別の呼び出しがapiに行われるまでに15分の休憩があります。これはTweepy
に次のパラメータを追加することで対処されています。この場合、API
が限界に達しこれにより
Rate limit reached. Sleeping for: 895
Rate limit reached. Sleeping for: 895
Finished outputting: @barackobama at 2017/07/01 10:36:07
回:
main_api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
結果はこのようなものです。毎回15分待ってから@barackobama
の信者をすべて奪取した。
ただし、for loop
が失敗することがあります。メッセージプリントアウト:
'Could not access user @barackobama. Skipping...'
これは、主に接続の問題のいずれかが原因であるが、TwitterのAPIは、右のリクエストを送信されていない、またはアカウントはフォロワーの多くを持つとTweepyのパッケージには、それに対処することができませんそれに応じて。私は、次の方法のようにWhile True
引数にAPIをラップしようとした可能接続障害を考慮して
:ループのために、機能をこのように巻くことによって、しかし
def download_followers(user, api):
all_followers = []
while True:
try:
for page in tweepy.Cursor(api.followers_ids, screen_name=user).pages():
all_followers.extend(map(str, page))
return all_followers
except tweepy.TweepError:
print('Could not access user {}. Trying Again...'.format(user))
continue
break
は正常に動作していません。 Iterating
を各user
に1回だけ追加し、そのフォロワーをすべて捕まえておらず、 `lookup_userリストの次のuser
に移動します。例えば
、次のように動作のinstead
:
Finished outputting: @barackobama at 2017/07/01 10:36:07
Finished outputting: @donaldtrump at 2017/07/01 10:36:07
Finished outputting: @georgebush at 2017/07/01 10:36:07
Rate limit reached. Sleeping for: 895
Finished outputting: @richardnixon at 2017/07/01 10:41:08
は、したがって、一度だけ各ユーザを反復:
Rate limit reached. Sleeping for: 895
'Could not access user @barackobama. Trying again...'
Rate limit reached. Sleeping for: 895
Finished outputting: @barackobama at 2017/07/01 10:36:07
Rate limit reached. Sleeping for: 895
Rate limit reached. Sleeping for: 895
Rate limit reached. Sleeping for: 895
Finished outputting: @donaldtrump at 2017/07/01 10:36:07
それは次のように作用します。
私が間違っていることはありますか?