pythonでtwitterを使うには、pythonのライブラリを使用する必要があります
ライブラリには以下のものがあります
- python-twitter
- TwitterAPI
- tweepy
- twython
今回はpython初心者でも扱いやすい、「tweepy」について解説をしていきたいと思います
tweepyを使用すれば、twitter操作のほとんどを行うことができ、さらにbot作成まで行えます
bot作成に興味がある方は、こちらの記事を参考にしてください

pythonでtwitterを操作してみたい
pythonでtweepyを扱えるようになりたい
pythonでtwitterを自動化したい
といった方に向けて、書いていきます!
以下の記事では、pythonでtwitterを使う方法をまとめて解説しているので、参考にしてみてください
pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります

pythonでtwitterが扱えるtweepyについて

tweepyはtwitter API認証を受けている必要がありますが、認証さえ受ければtwitter操作のほとんどをpythonで行うことができます
例えば別の記事で解説している、twitterの懸賞に自動応募させたり、ツイートを自動投稿することができます
twitter APIの認証
tweepyを使うために、twitter APIの認証を行います
- Developerに登録
- twitter APIの使用用途を説明
- twitter APIの申請→承認
ざっくり上記の流れになります
twitter APIの申請は年々厳しくなっていますが、2022年に承認を受けた方法はこちら

twitter APIの承認を受けたらcreate appを作る
twitter APIの承認を受けたらcreate appを作ります



画像の順番でも、API申請記事の方法でもOKです
twitter側でサードパーティアプリの許可をする
create appが終了したら、twitterアカウント側でサードパーティアプリの許可をします

これを許可することで、pythonからTwitterに投稿することなどが出来ます
これでpythonでtwitterを使うための準備はOKです
tweepyのインストール
続いてtweepyをインストールしていきます
Macならターミナルで、windowsならコマンドプロンプトで以下のコマンドを打ちます
pip install tweepy
これでpythonでtwitterを操作することができます
pythonでtwitterが扱えるtweepyのコード

ここからはtweepyのコード解説をしていきます
ここで解説していないコードはこちらを見ると参考になります
tweepyでいいねする方法
tweepyでいいねするには、以下のコードを使用します
api.create_favorite(id)
「id」にはいいねしたいユーザーIDを入力すればOKです
実際のコードはこちら
#全ての****には自分自身のキーやキーワードを入力する
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
# 指定した条件(検索ワード、検索件数)に一致するユーザ情報を取得
search_results = api.search_tweets(q="****", result_type="mixed",count=25)
for result in search_results:
tweet_id = result.id #Tweetのidを取得
user_name = result.user._json['screen_name'] #ユーザーのidを取得
user_id= result.user._json['id']
try:
api.create_favorite(tweet_id) #ファボする
except Exception as e:
print(e)
「result type」は3種類用意されており、
- “recent”:時系列で最新ツイートを検索
- “popular”:人気のあるツイートを検索
- “mixed”:上記を混ぜたもの
となっています
デフォルトでは、”recent”になっているので、変更する場合には、「result_type=””」で指定する必要があります
tweepyでリツイートをする方法
#全ての****には自分自身のキーやキーワードを入力する
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
# 指定した条件(検索ワード、検索件数)に一致するユーザ情報を取得
search_results = api.search_tweets(q="****", result_type="mixed",count=25)
for result in search_results:
tweet_id = result.id #Tweetのidを取得
user_name = result.user._json['screen_name'] #ユーザーのidを取得
user_id= result.user._json['id']
print(user_name,user_id)
try:
api.retweet(tweet_id)
except Exception as e:
print(e)
tweepyを使用して、リツイートを応用する方法は以下の記事で詳しく解説しているので、そちらも参考にしてください

tweepyで自動ツイートをする方法
tweepyで投稿するには、api.update_statusを使用します
実際のコードはこちら
#全ての****には自分自身のキーやキーワードを入力する
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
# 好きな言葉をツイート
api.update_status("Pythonから投稿!")
これだけでは自動ツイートができないので、自動ツイートさせるために設定を行う必要があります
設定はHerokuを使用していきます
pythonを使ってtwitterの自動化-twitter運用効果あり-
上記note無料部分で、Herokuの設定ができますので、参考にしてください
ツイート内容をランダムに投稿する場合は、ツイート内容をリストに入れておき、random.choiceを使用します
import random
import tweepy
#****には自身のコードを入力してください
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
#****にツイートしたい内容を入力していきます.「,」で区切ることで、複数登録できます
tweetlist=["****"]
#リストに含まれるツイート内容をランダムでツイート
api.update_status(random.choice(tweetlist))
リアルタイムに応答するtwitterbot
特定のキーワードがツイートされたら、それに対してリアルタイムに応答するtwitter botは以下のように書いていきます
import tweepy
#****には自身のコードを入力してください
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
#****にキーワードを入力
word="****"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
class MyStreamListener(tweepy.Stream):
def on_status(self, status):
if 'RT @' not in status.text[0:2]:
if 'http' not in status.text:
api.retweet(id=status.id)
#それぞれのキーを入力
myStreamListener = tweepy.Stream('CONSUMER_KEY here',
'CONSUMER_SECRET here',
'ACCESS_TOKEN here',
'ACCESS_SECRET here')
#myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStreamListener.filter(track=[word], threaded=False)
自動フォロー
# ライブラリの読み込み
import tweepy
#****には自身のコードを入力してください
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
#twitter認証
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
# フォロワーを新しい順で取得。(件数は5件としています。)
flist= api.followers(count=5)
for f in flist:
# 相手のアカウントの説明文にフォローバックしたくない[キーワード]があればここで登録。
#(例:副業など)
if "<相手のアカウントの説明文内のフォローバックしたくないキーワード>" in f.description:
continue
else:
api.create_friendship(f.id)
上記のHerokuと併せて使えば、自動でフォローをすることができます
ダイレクトメッセージを送る
# ライブラリの読み込み
import tweepy
#****には自身のコードを入力してください
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
#twitter認証
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
# アカウント指定(Twitterアカウントの@以降の英数字)
Account = '****'
# アカウントの内部IDを取得する
inner_id = api.user_timeline(Account, count=1, page=0)[0].user.id
api.send_direct_message(recipient_id=inner_id,text='Hello world!')
アカウントを指定することで、指定したアカウントにダイレクトメッセージを送ることができます
for文や自動フォローなどと組み合わせれば、フォローしてくれた相手に対して、DMを送ることもできます
api.send_direct_message()でダイレクトメッセージは可能です
しかし引数のrecipient_idが内部IDを指しているので、数値型を指定する必要があります
異なる型を指定すると、「‘code’: 214, ‘message’: “event.message_create.target.recipient_id: ‘hogehoge’ is not a valid Long”」
のようなエラーが出ますので、気をつけてください
tweepyで取得したデータからテキストマイニングを行う
twitter APIを使うことで、twitterデータを収集することができます
収集したデータをもとにテキストマイニングをおこなうと以下のようになります

import tweepy
from datetime import datetime,timezone
import pytz
import pandas as pd
import collections
import matplotlib.pyplot as plt
from wordcloud import WordCloud
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
search_results = api.search_tweets(q="", result_type="recent",tweet_mode='extended',count=5)
tw_data = []
for tweet in search_results:
#tweet_dataの配列に取得したい情報を入れていく
tw_data.append([
tweet.id,
tweet_time,
tweet.full_text,
tweet.favorite_count,
tweet.retweet_count,
tweet.user.id,
tweet.user.screen_name,
tweet.user.name,
tweet.user.description,
tweet.user.friends_count,
tweet.user.followers_count,
create_account_time,
tweet.user.following,
tweet.user.profile_image_url,
tweet.user.profile_background_image_url,
tweet.user.url
])
#取り出したデータをpandasのDataFrameに変換
#CSVファイルに出力するときの列の名前を定義
labels=[
'ツイートID',
'ツイート時刻',
'ツイート本文',
'いいね数',
'リツイート数',
'ID',
'ユーザー名',
'アカウント名',
'自己紹介文',
'フォロー数',
'フォロワー数',
'アカウント作成日時',
'自分のフォロー状況',
'アイコン画像URL',
'ヘッダー画像URL',
'WEBサイト'
]
#tw_dataのリストをpandasのDataFrameに変換
df = pd.DataFrame(tw_data,columns=labels)
df1=df.iat[2,2]
df2=df.iat[3,2]
tw_text=df1 + df2
f=open('text.txt','w')
f.write(tw_text)
f.close
f= open("/text.txt", 'r', encoding='UTF-8')
text=f.read()
f.close()
word_list=[]
while node:
word_type = node.feature.split(',')[0]
if word_type in ["名詞",'代名詞']:
word_list.append(node.surface)
node=node.next
word_chain=' '.join(word_list)
c=collections.Counter(word_list)
font_path='/System/Library/Fonts/ヒラギノ明朝 ProN.ttc'
words = ['https','t','co','自民','し','w','そう', 'ない', 'いる', 'する', 'まま', 'よう', 'てる', 'なる', 'こと', 'もう', 'いい', 'ある', 'ゆく', 'れる', 'ん', 'の']
result = WordCloud(width=800, height=600, background_color='white',
font_path=font_path,regexp=r"[\w']+",
stopwords=words).generate(word_chain)
result.to_file("./wordcloud_sample1.png")
print(c.most_common(20))
fig = plt.subplots(figsize=(8, 10))
この記事で紹介している内容で、pythonでtwitter操作は概ね行うことができます
あとは、組み合わせてみたり、for文やif文などをうまく使うことで、オリジナルのtwitterツールが作成することができます
pythonの基礎文法があまり理解できていない場合には、以下のサイトなどを利用するのも一つの手です
おすすめプログラミングスクール(無料体験あり)
