Python

PythonでTwitterに自動投稿する方法【tweepy】

2023年1月13日

パイソンでツイッター

『投稿内容をまとめたExcelファイルから定期的にツイートしたい。』

そのほかにも
『自動でフォローバックしたい。』
『あのアカウントでツイートされたテキストを抽出したい。』

そんな悩みがPythonを使えばほんの一瞬で解決できます。

Pythonでtwitterを自動運用する準備

パイソン-ツイッター投稿準備

PythonでTwitterを操作するには『tweepy』といったモジュールのインストールと
TwitterAPIの承認をもらう必要があります。

以下の手順で解説します。

Pythonでtwitterを使う準備

  • Pythonでtwitterを使うためにtwitterAPIの承認を受ける
  • tweepyのインストール

手順1:Pythonでtwitterを使うためにTwitterAPIの承認を受ける

TwitterAPIの使用申請をしないとPythonでTwitterを操作できません。

申請方法を下の記事で紹介しているので、参考にしてください。

あわせて読みたい
ツイッターapi
【Twitter自動運用必須】TwitterAPIの申請方法

続きを見る

手順2:tweepyのインストール

TwitterAPIを取得したら、モジュールをインストールしましょう。

pip install tweepy

pip install tweepyでインストールできます。

Pythonでtwitterを運用する【コード紹介】

パイソンでツイッターを運用

PythonでTwitterを運用する準備は整ったので、
次は以下の内容でコードを紹介します。

コード紹介

  • ①Pythonで『ツイート』する方法
  • ②Pythonで『自動フォロー』する方法
  • ③Pythonで『ツイートを抽出』する方法

①Pythonで『ツイート』する方法

import tweepy

# KEY指定
CK="TwitterAPI登録申請して取得したConsumer_keyを入力してください"
CS="TwitterAPI登録申請して取得したConsumer_secretを入力してください"
AT="TwitterAPI登録申請して取得したAccess_tokenを入力してください"
AS="TwitterAPI登録申請して取得したAccess_secretを入力してください"

# tweepyの設定
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)

# ツイートを実行
api.update_status("テスト")

CKCSATASはTwitterAPI利用申請して取得した値を入力してください。

※下の記事で紹介しているAPI KEYCK
 API KEY SECRETCSを指しています。

あわせて読みたい
ツイッターapi
【Twitter自動運用必須】TwitterAPIの申請方法

続きを見る

api.update_status("テスト")でツイートする内容を記載するだけなんで
めちゃくちゃ簡単です。

投稿内容をまとめたExcelファイルからツイートなんてことも出来ちゃいます。

参考としてコードを紹介します。

import openpyxl
import tweepy

# KEY指定
CK="TwitterAPI登録申請して取得したConsumer_keyを入力してください"
CS="TwitterAPI登録申請して取得したConsumer_secretを入力してください"
AT="TwitterAPI登録申請して取得したAccess_tokenを入力してください"
AS="TwitterAPI登録申請して取得したAccess_secretを入力してください"

# tweepyの設定
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)

directry='C:/Document/'

# ブック取得
wb = openpyxl.load_workbook(directry+'Twitter.xlsx', data_only=True)

# シートを取得
sheet_Twitter = wb.get_sheet_by_name('Sheet1')

# セルを取得
tweet=(sheet_Twitter.cell(row=1, column=1).value)# 1行1列目の値を取得
print(tweet)
api.update_status(status=tweet.replace("\\n","\n"))

PythonでExcelファイルを読み込む方法は下の記事を参考にしてください。

あわせて読みたい
Pythondでエクセルを操作
【OpenPyXL】PythonでExcelを自動操作する方法

続きを見る

エクセルファイルに\nと記述すると改行されます。
※エクセルファイル上では¥nと表示されます。


しかし、Pythonで\nを読み込むと改行コードの\nではなく、
文字列\\nのとして認識されてます。

なのでreplace("\\n","\n")\\n\nに変換することで
正しく改行できます。

②Pythonで『自動フォロー』する方法

コード全体を紹介します。

import tweepy

# KEY指定
CK="TwitterAPI登録申請して取得したConsumer_keyを入力してください"
CS="TwitterAPI登録申請して取得したConsumer_secretを入力してください"
AT="TwitterAPI登録申請して取得したAccess_tokenを入力してください"
AS="TwitterAPI登録申請して取得したAccess_secretを入力してください"

# tweepyの設定
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)

# フォロワーを新しい順で10件取得。
flist= api.get_follower_ids(count=10)

for f in range(len(flist)):
    api.create_friendship(user_id=flist[f])
# フォロワーを新しい順で10件取得。
flist= api.get_follower_ids(count=10)

まずはフォロワーのIDを取得します。

countを大きくしすぎるとTwitterのサーバーに負荷を掛けることになります。
最悪の場合アカウント制限や凍結の可能性があるので、注意しましょう。
countは10~15ぐらいが適切と思います。

for f in range(len(flist)):
    api.create_friendship(user_id=flist[f])

取得したIDはリスト化されてるので、
for文を使ってリスト内の要素を取得してフォローしています。

③Pythonで『ツイートを抽出』する方法

import tweepy

# KEY指定
CK="TwitterAPI登録申請して取得したConsumer_keyを入力してください"
CS="TwitterAPI登録申請して取得したConsumer_secretを入力してください"
AT="TwitterAPI登録申請して取得したAccess_tokenを入力してください"
AS="TwitterAPI登録申請して取得したAccess_secretを入力してください"

# tweepyの設定
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)

# ツイート取得
pages = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
# pages = list(range(1, 21))と記載しても大丈夫です。

# 設定
account=("メカタナ | エンジニア投資家") #アカウント名
twitter_id=("mekatanamaya") #id

print(account)
print(twitter_id)

# ツイート取得
for page in pages:
    results = api.user_timeline(screen_name=twitter_id, count=200, page=page)
    for r in results:
        if "@" in r.text:
            continue
        else:
            data.append(r.text)

print(data)
# ツイート取得
pages = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
# pages = list(range(1, 21))と記載しても大丈夫です。

後で解説しますが、api.user_timelineというメソッドを使用して
ツイート内容を取得します。

しかし、取得上限が200なのでpageの値を増やすことで
200×page数のツイートを取得できます。

なので、pagesは1から20のpageを作成すると宣言しています。
list(range(1, 21))でも1から20のpageを作成できます。

# 設定
account=("メカタナ | エンジニア投資家") #アカウント名
twitter_id=("mekatanamaya") #id

ツイッターのアカウント名IDを設定します。

ツイッターアカウント

上の画像のようにアカウント名と@以降のIDを記述して下さい。

# ツイート取得
for page in pages:
    results = api.user_timeline(screen_name=twitter_id, count=200, page=page)
    for r in results:
        if "@" in r.text:
            continue
        else:
            data.append(r.text)

print(data)

for page in pages:では最初に宣言した
pagesの数だけ同じ処理を繰り返します。

results = api.user_timeline(screen_name=twitter_id, count=200, page=page)では
pageごとに200ツイートをtwitter_idから取得します。

次のfor r in results:はツイート文をdataに格納していますが
がついたメンションを省いています。

print(data)で結果が表示されるはずなので、
最終的にはエクセルで保存してもいいかもしれませんね。

下の記事を参考にエクセルに保存してしてみて下さい。

あわせて読みたい
Pythondでエクセルを操作
【OpenPyXL】PythonでExcelを自動操作する方法

続きを見る

今回は以上です。

  • この記事を書いた人

メカタナ

副業ブロガー【経歴】関西出身▶︎理系国立大学院▶︎東証プライム上場企業メーカー開発職▶︎妻と息子1人と暮らしています。▶︎メカタナブログを開設⇒仕事や日常で役立つPythonプログラムを紹介していきます!

-Python