LoginSignup
0
1

More than 3 years have passed since last update.

twitterから有名人のtweet履歴を取得する

Posted at

IBM cloudのpersonality insightを使ってみたい、と思いすぐにぶつかった壁。
その際の備忘録。

困ったこと

3000語以上の文章が必要(というか望ましい)とのこと。
そこでtwitterさんから有名人のtweetを拝借する。
1tweetあたり約15単語程度あるとみなし、1名あたり200tweet取得する。

ただし、大前提としてtwitter APIの登録をしておく必要がある。
私は以前に登録申請済みなので、ここでは同手順は省略する。

実装方法

# -*- coding:utf-8 -*-
###
import tweepy
import re
import subprocess

# ユーザリスト
import user_list
# twitter APIの認証キー
# Access_token, Access_secret, Consumer_key, Consumer_secretの4つ
from auth import twitter_credentials as tc

###
def get_twitterdata(username, rfile):

  # 認証キー読み込み、API設定
  auth = tweepy.OAuthHandler(tc.Consumer_key, tc.Consumer_secret)
  auth.set_access_token(tc.Access_token, tc.Access_secret)
  api = tweepy.API(auth, wait_on_rate_limit = True)

  # tweetを格納するリスト
  tweets_data =[]
  # 200tweetまでデータ取得
  for tweet in api.user_timeline(screen_name=username, count=200):
    # つぶやきテキストを取得
    tmp_text=tweet.text
    # 連続改行は1つに集約
    tmp_text=re.sub('\n+','\n',tmp_text)
    # tweetをリストへ追加
    tweets_data.append(tmp_text + '\n')

  # ファイル出力
  with open(rfile, "w",encoding="utf-8") as wf:
    wf.writelines(tweets_data)

###
if __name__ == '__main__':

  # twitterのユーザ名を取得
  userlist=user_list.username

  for i in range(0,len(userlist)):
    username = userlist[i]
    rfile = "./data/tweet_"+str(i).zfill(3)+".csv"

    try:
      get_twitterdata(username, rfile)
    # プライベート設定されているなど、取得できない場合は空ファイルを生成
    except:
      subprocess.run(["touch",rfile])

ユーザリストの例

バレバレだけど、人名は伏せる。
username=[
"ariyoshihiroiki",
"matsu_bouzu",
"takapon_jp"
]

結果

記述内容は著作権にかかるかもしれないので割愛
tweet_000.csv
tweet_001.csv
tweet_002.csv
ができる。

あとがき

15分ごと(?)に取得できるデータ量は制限されているため、欲張るとかなり待たされる。
リツイートなど、本人の文章ではないものも取得してしまうので、除外してしまってもよいかも。

0
1
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
0
1