フォロワーの一覧を作るのにちょっとListの使い方でハマったので、書いておく。
結局はListのappendを使って加えていけばよい。
tweepyのCursorを使って取得するが、APIのRate limitに引っかからないように 1秒のwaitをいれながら読み込ませる。
(IDを変更すれば他のアカウントのフォロー・フォロワーも取得できるのだが、これでも300でRate limitにかかってしまった。もっと、waitを広げる必要があるのだと思う。)
※2017/11/16追記
>Rate Limitは15分で300らしい。
>ということは、1分あたり20で少なくとも3秒のwaitが必要ということか?
> →4秒のWaitをいれたら、300で引っかかることはなくなった。
最終的に完成したのは↓
コメントアウトのほうではフォローのリストも作成可能。
def friend(): follower1=[] follow = tweepy.Cursor(api.followers, id="s51517765") #自分をフォローしているひと #follow = tweepy.Cursor(api.friend, id="s51517765") #自分がフォーローしている人 print("My follower!") for friend in follow.items(): follower1.append(friend.screen_name) time.sleep(4) #apiのRate limitのため print(follower1)
以下,失敗例とともにListの使い方を整理しておこうと思います。
読み込んだScreen_nameはstring型なので、そのままListに加えていこうと、
follower1=[] for friend in follow.items(): follower1 +=friend.screen_name >>>error
としてもErrorになった。(ListにListでないものを追加しようとしているため)
test='1111' test+='2222' print(test) >>>11112222
この場合は文字列の結合になる。
test=['1111'] test+=['2222'] print(test) >>>['1111','2222']
という形に書くことができれば、希望通りなのだが、screen_nameをstring型で取得してもListじゃないからうまくいかない。
ここで、そういえばJoinという関数があったことを思い出す。
test1=['1111','2222'] test=','.join(test1) print(test) >>>1111,2222
joinはsplitの逆変換と覚えておけばよい。
#2017/11/23追記
Listの足し算としてのappend関数
test=['1111'] test.append(['333','444']) print(test) >>>['1111', ['333', '444']]
これでは”Listの要素にListが入る”のでここでは適切でない。
test=['1111'] test.extend(['333','444']) print(test) >>>['1111', '333', '444']
追加されるものがListである場合はextendを使う。