python PR

pythonでtwitterが扱えるtweepyについて【サンプルコードあり】

python twitter tweepy
記事内に商品プロモーションを含む場合があります

pythonでtwitterを使うには、pythonのライブラリを使用する必要があります

ライブラリには以下のものがあります

  • python-twitter
  • TwitterAPI
  • tweepy
  • twython

今回はpython初心者でも扱いやすい、「tweepy」について解説をしていきたいと思います

tweepyを使用すれば、twitter操作のほとんどを行うことができ、さらにbot作成まで行えます

bot作成に興味がある方は、こちらの記事を参考にしてください

python twitter bot
pythonでtwitter botを作成してみよう【サンプルコードあり】これまでの記事でpythonでtwitter APIを使った活用方法などを紹介してきました。今回はpythonを使ってtwitter botを作成していきたいと思います。 定期的にツイートするtwitter botやリアルタイムに応答するtwitter botをサンプルコードを交えつつ解説していきます。...

pythonでtwitterを操作してみたい

pythonでtweepyを扱えるようになりたい

pythonでtwitterを自動化したい

といった方に向けて、書いていきます!

以下の記事では、pythonでtwitterを使う方法をまとめて解説しているので、参考にしてみてください

pythonでtwitterを使ってみよう

pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります

pythonでtwitterの懸賞に自動応募する
pythonでtwitterの懸賞に自動応募させる【サンプルコードあり】twitterを見ていると、「フォロー&リツイート」でプレゼント企画を行なっているのをよく見かけます。これ、手動で懸賞に参加するのってしんどいですよね。なので、pythonを使って、自動化をしていきたいと思います。...

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

tweepyについて

tweepyはtwitter API認証を受けている必要がありますが、認証さえ受ければtwitter操作のほとんどをpythonで行うことができます

例えば別の記事で解説している、twitterの懸賞に自動応募させたり、ツイートを自動投稿することができます

twitter APIの認証

tweepyを使うために、twitter APIの認証を行います

  1. Developerに登録
  2. twitter APIの使用用途を説明
  3. twitter APIの申請→承認

ざっくり上記の流れになります

twitter APIの申請は年々厳しくなっていますが、2022年に承認を受けた方法はこちら

pythonでtwitter APIを使用する方法
pythonでtwitter APIを取得する方法【全18枚の図解+例文あり】twitterのAPI取得は年々厳しくなってきています。今回は筆者が2022年にpythonでtwitter APIを取得するために行なった方法を図解+例文つきで紹介していきます。pythonでtwitterを利用する際には、twitter APIの取得が必須になるので、参考にしてください。...

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

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

ダッシュボード Twitter API project1 Twitter API setup

画像の順番でも、API申請記事の方法でもOKです

twitter側でサードパーティアプリの許可をする

create appが終了したら、twitterアカウント側でサードパーティアプリの許可をします

twitter APIサードパーティアプリ

これを許可することで、pythonからTwitterに投稿することなどが出来ます

これでpythonでtwitterを使うための準備はOKです

tweepyのインストール

続いてtweepyをインストールしていきます

Macならターミナルで、windowsならコマンドプロンプトで以下のコマンドを打ちます

pip install tweepy

これでpythonでtwitterを操作することができます

pythonでtwitterが扱えるtweepyのコード

tweepyコード

ここからは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を使用して、リツイートを応用する方法は以下の記事で詳しく解説しているので、そちらも参考にしてください

python ツイート リツイート
pythonでtwitterのリツイート方法を応用してみる【サンプルコード付き】この記事ではpythonでtwitter APIを使用して、ツイートをリツイートしていく方法について解説していきます。リアルタイムでリツイートする方法やbot感を出さないための方法もサンプルコード付きで解説をしていきます。...

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データを収集することができます

収集したデータをもとにテキストマイニングをおこなうと以下のようになります

wordcloud_sample1
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の基礎文法があまり理解できていない場合には、以下のサイトなどを利用するのも一つの手です

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.