LoginSignup
3
3

More than 3 years have passed since last update.

[python]複数ユーザーのTwitterタイムラインを取得する

Posted at

背景、目的

複数のTwitterアカウントのscreen_name(@----)を格納したリストが用意してあります。

 (参考) [python]リスト内の文字列を含むツイートをしたユーザのリストを作成する
      https://qiita.com/Yoocie/items/5ba57645d38ee5203ef7

今回は、作成したリストに含まれるユーザーのタイムラインを取得し、txtファイルとして保存していきます。一つのタイムラインにつき、一つのtxtファイルが作成されるようにします。

なお、一つのタイムラインあたり取得する最大のツイート数は3,200とし、RTは取得しないこととしました。

ユーザーリスト

用意したリストは、こんな感じです。(実際には、文字列が各ユーザーのscreen_nameになります。)

users.py
users=['---','vvv','^^^',...(中略)...,'+++',')))']

関数の作成(タイムラインの取得、テキストファイルの作成)

get_timeline.py

import tweepy
import config  #同じディレクトリに'config.py'というファイルがあります。

'''
config.py
CK = "*****" #CONSUMER_KEY
CS = "*****" #CONSUMER_SECRET
AT = "*****" #ACCESS_TOKEN
ATS = "*****" #ACCESS_TOKEN_SECRET
'''

CK = config.CK
CS = config.CS
AT = config.AT
ATS = config.ATS

# OAuth認証
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)


#1ユーザー分のタイムラインを取得し、テキストファイルとして保存する関数の定義
def get_timeline(name,i):
    #一人あたり最大3200件のツイートを取得
    pages = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
    data = []
    for page in pages:
        results = api.user_timeline(screen_name=name,\
                                    include_rts=False,\#リツイートは取得しません。
                                    count=200,\#上限の200件ずつ、ツイートを取得します。
                                    page=page)
        for result in results:
            data.append(result.text)

    line=''.join(data)
    #タイムラインの内容を含むテキストファイルの作成、保存
    #テキストファイルの名前は '20191210_user3_^^^.text' というような形式
    with open('20191210_user'+str(i)+'_'+name+'.txt', 'wt') as f:
        f.write(line)

関数の使用

上で定義した関数を用います。ここでは、ユーザーリストの最初の6アカウントのタイムラインを取得します。

for i in range(6):
    get_timeline(users[i],i)

環境

macOS Catalina
Jupiter notebook

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3