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の申請方法

以前にPythonを使ったTwitterの自動運用について紹介しました。 しかし、TwitterにAPI使用申請しないと運用できないので今回はその申請方法について解説します。 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の申請方法

以前にPythonを使ったTwitterの自動運用について紹介しました。 しかし、TwitterにAPI使用申請しないと運用できないので今回はその申請方法について解説します。 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を自動操作する方法

Excel操作を自動化したいと思ったことはありませんか? 『Excelを仕事で使っているが、毎回同じ単純な操作』『大量にデータを入力しているが、ミスしそう』そんな悩みがPythonを使えばほんの一瞬で ...

続きを見る

エクセルファイルに\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を自動操作する方法

Excel操作を自動化したいと思ったことはありませんか? 『Excelを仕事で使っているが、毎回同じ単純な操作』『大量にデータを入力しているが、ミスしそう』そんな悩みがPythonを使えばほんの一瞬で ...

続きを見る

今回は以上です。

  • この記事を書いた人

メカタナ

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

-Python