Help us understand the problem. What is going on with this article?

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

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

nari_wata
とある企業で音声言語処理、対話ロボットの研究開発をしていました。 せっかくやってきたことなので、言語処理で遊んでいます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした