プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

pythonでフォロワーの一覧をListとして作成する

フォロワーの一覧を作るのにちょっと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を使う。