python PR

pythonでtwitter APIを利用してツイートを取得する【サンプルコードあり】

pythonでtwitter APIを使用してツイートを取得する
記事内に商品プロモーションを含む場合があります

前回の記事では、pythonでtwitterを扱うためにtwitter APIの取得方法について解説をしました

今回の記事では、

pythonでtwitterを操作してみたい

pythonでtwitterのbotを作成したい

という方向けに、pythonを使ったツイートの取得方法について解説していきます

もっと詳しく知りたい方は、以下の記事を参考にしてください

python twitter
pythonでtwitterを使ってみよう【コピペでOKサンプルコードつき】pythonを使えばtwitter操作を自動化することができます。僕が収益を出したtwitter自動化のコードを元に、pythonでtwitterを操作する方法を解説していきます。...

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

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

おすすめ書籍

pythonでtwitterを利用する

twitter API

pythonでtwitterを利用するためには、

  • APIキー
  • APIシークレット
  • アクセスキー
  • アクセスシークレット

が必要になります

まだ取得されていない場合には、こちらの記事から取得してください

今回、twitterから取得するのは以下の項目です

  • ツイートのID
  • ツイートした時刻
  • いいねされた数
  • リツイートされた数
  • ツイート内容
  • ID
  • ユーザー名
  • アカウント名
  • 自己紹介文
  • フォロー数
  • フォロワー数
  • アカウント作成日時
  • 自分がフォローしているか?
  • アイコン画像のURL
  • ヘッダー画像のURL
  • WEBサイト

上記の項目を全て取得して、取得後にcsvファイルに保存していきたいと思います

pythonでtwitterのツイートを取得する

では、まず完成しているコードです

# ライブラリのインポート
import tweepy
from datetime import datetime,timezone
import pytz
import pandas as pd


# Twitterの認証
#Twitter情報。
#********には自分自身のAPIキーなどを入力してください

consumer_key        = '********'
consumer_secret     = '********'
access_token        = '********'
access_token_secret = '********'

#Twitterの認証
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# ”wait_on_rate_limit = True” 利用制限にひっかかた時に必要時間待機する
api=tweepy.API(auth,wait_on_rate_limit=True)

# 検索条件の設定
search_word = 'ブログ初心者 min_faves:200'
#何件のツイートを取得するか
item_number = 150

#検索条件を元にツイートを抽出
tweets = tweepy.Cursor(api.search_tweets,q=search_word, tweet_mode='extended',result_type="mixed",lang='ja').items(item_number)

#関数: UTCをJSTに変換する
def change_time_JST(u_time):
    #イギリスのtimezoneを設定するために再定義する
    utc_time = datetime(u_time.year, u_time.month,u_time.day, \
    u_time.hour,u_time.minute,u_time.second, tzinfo=timezone.utc)
    #タイムゾーンを日本時刻に変換
    jst_time = utc_time.astimezone(pytz.timezone("Asia/Tokyo"))
    # 文字列で返す
    str_time = jst_time.strftime("%Y-%m-%d_%H:%M:%S")
    return str_time

#抽出したデータから必要な情報を取り出す
#取得したツイートを一つずつ取り出して必要な情報をtweet_dataに格納する
tw_data = []

for tweet in tweets:
    #ツイート時刻とユーザのアカウント作成時刻を日本時刻にする
    tweet_time = change_time_JST(tweet.created_at)
    create_account_time = change_time_JST(tweet.user.created_at)
    #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)

#CSVファイルに出力する
#CSVファイルの名前を決める
file_name='tw_data.csv'

#CSVファイルを出力する
df.to_csv(file_name,encoding='utf-8-sig',index=False)

ライブラリのインポート

# ライブラリのインポート
#pythonでtwitterを操作する
import tweepy 
#時刻の操作
from datetime import datetime,timezone
#タイムゾーンを変更する
import pytz
#pandasの使用.取得したツイートデータを加工する
import pandas as pd

まずは必要なライブラリをインポートします

tweepyをインストールしていない場合には、ターミナルで「pip install tweepy」でインストールしておきましょう

それ以外はコメントアウトを参照にしつつ、進めていってください

twitter API認証

# Twitterの認証
#Twitter情報。
#********には自分自身のAPIキーなどを入力してください

consumer_key        = '********'
consumer_secret     = '********'
access_token        = '********'
access_token_secret = '********'

#Twitterの認証
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# ”wait_on_rate_limit = True” 利用制限にひっかかた時に必要時間待機する
api=tweepy.API(auth,wait_on_rate_limit=True)

ここで認証することで、pythonでtwitterを扱えるようになります

これがないと使えないので、確実に入力しておきます

twitterのツイートを検索して、取得する

# 検索条件の設定
#min_favesはいいねの件数が最低200件以上のツイートのみを取得する.変更可能
#*****に検索キーワードを入力する

search_word = '***** min_faves:200'
#何件のツイートを取得するか
item_number = 150

#検索条件を元にツイートを抽出
tweets = tweepy.Cursor(api.search_tweets,q=search_word, tweet_mode='extended',result_type="mixed",lang='ja').items(item_number)

これでツイートの取得ができます

取得したツイート内容はtweetsに代入されています

twitterのツイートを検索・取得のオプション

search_wordの後ろにオプションを付け加えることができます

検索キーワード説明
キーワード -除外するキーワード-の後に続くキーワードを除外して検索
キーワード min_faves:100いいねの数が100以上のツイートだけ
キーワード min_retweets:100100リツイート以上のツイートを検索
from:ユーザーネーム特定のユーザーのツイートを検索
キーワード1 OR キーワード2ブログもしくはブロガーのキーワードを検索
“キーワード”” “で囲われた文字列に完全一致するツイートを検索

必要情報を取得する

#取得したツイートを一つずつ取り出して必要な情報をtweet_dataに格納する
tw_data = []

for tweet in tweets:
    #ツイート時刻とユーザのアカウント作成時刻を日本時刻にする
    tweet_time = change_time_JST(tweet.created_at)
    create_account_time = change_time_JST(tweet.user.created_at)
    #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サイト'
    ]

tweetsに代入したツイート内容から必要な情報を取得していきます

tweets内に必要情報が複数入っているため、for文で一つずつ取り出していきます

  • tweet.〇〇: ツイートの情報を取得
  • tweet.user.〇〇: 投稿者の情報を取得

===例===

  • tweet.text => ツイート内容を取得
  • tweet.user.name => ユーザーのアカウント名を取得

その後、取り出したデータを一つずつ「tw_data」にappend(追加)していきます

時刻の修正

#関数: UTCをJSTに変換する
def change_time_JST(u_time):
    #イギリスのtimezoneを設定するために再定義する
    utc_time = datetime(u_time.year, u_time.month,u_time.day, \
    u_time.hour,u_time.minute,u_time.second, tzinfo=timezone.utc)
    #タイムゾーンを日本時刻に変換
    jst_time = utc_time.astimezone(pytz.timezone("Asia/Tokyo"))
    # 文字列で返す
    str_time = jst_time.strftime("%Y-%m-%d_%H:%M:%S")
    return str_time

取得したツイートの時刻がイギリス時間になっているため、これを日本時間に変えます

pandasに加工

#取り出したデータをpandasのDataFrameに変換
#CSVファイルに出力するときの列の名前を定義
labels=[
    'ツイートID',
    'ツイート時刻',
    'ツイート本文',
    'いいね数',
    'リツイート数',
    'ID',
    'ユーザー名',
    'アカウント名',
    '自己紹介文',
    'フォロー数',
    'フォロワー数',
    'アカウント作成日時',
    '自分のフォロー状況',
    'アイコン画像URL',
    'ヘッダー画像URL',
    'WEBサイト'
    ]

#tw_dataのリストをpandasのDataFrameに変換
df = pd.DataFrame(tw_data,columns=labels)

取得した各データをpandasのdataframeに変換していきます

csvに出力

#CSVファイルに出力する
#CSVファイルの名前を決める
file_name='tw_data.csv'

#CSVファイルを出力する
df.to_csv(file_name,encoding='utf-8-sig',index=False)

これで取得したツイートをcsvで出力することができます

  • file_name:保存するファイル名
  • encoding=‘utf-8_sig:日本語の文字化けを防ぐ
  • index = False:CSVファイルの1列目にインデックスを入れない

pythonからツイートをする

せっかくなので、pythonからツイートも行っていきたいと思います

#tweetを投稿
#-------------------------------------------------------------------------

import tweepy
#-------------------------------------------------------------------------

#Twitter情報。
#********には自分自身のAPIキーなどを入力してください

consumer_key        = '********'
consumer_secret     = '********'
access_token        = '********'
access_token_secret = '********'

#-------------------------------------------------------------------------
#Twitterの認証
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# ”wait_on_rate_limit = True” 利用制限にひっかかた時に必要時間待機する
api=tweepy.API(auth,wait_on_rate_limit=True)
 
#-------------------------------------------------------------------------
# ツイートを投稿
#********にツイート内容を入力
api.update_status("********")

上記コードのコピペでpythonからtwitterへツイートすることができます

次回はpythonでtwitter APIを利用していいねをするを解説していきます!

Pythonを体系的に学ぶ方法

そのため、Pythonエンジニアやデータサイエンティストとして、就職・転職を考えている場合には、プログラミングスクールの利用も検討するといいでしょう

プログラミングスクールを通うことで、漏れなく体系的にPythonについて学ぶことができます

.Pro

.Pro

.Proでは「Python」のカリキュラムを4年前に作成して以来、常にアップデートを行っており、近年では業務効率化にも幅を広げています

人工知能やwebサービス・機械学習を学ぶ、プログラミング特化コースです。

.Proがおすすめなのは、

  1. プログラミング未経験だけど新しく挑戦したい
  2. 人とコミュニケーションをとるのが苦ではない
  3. すぐにでも転職できる実践型スキルを本気で身につけたい

といった人たちです

特に、.Proを受講する方の約9割はプログラミング未経験の方なので、初めてプログラミングに触れる、といった方でも安心して受講することが出来ます。

.Proの受講期間は6ヶ月と長期であるため、途中で挫折しないためにも、雰囲気を味わっておくことは重要です

.Proでは実際の授業の雰囲気も見ることができ、講義開催日である土曜日に対面での個別相談も開催されています。

Aidemy Premium

Aidemy Premium

Aidemy Premiumは、オンラインで学べるプログラミングスクールです。Aidemyでは、初心者から上級者まで、様々なプログラミング言語を学ぶことができます。

Aidemyでは、以下のようなプログラミング言語を学ぶことができます。

  • HTML/CSS
  • JavaScript
  • Python
  • Ruby
  • PHP
  • Java

Aidemy Premiumでは、ビデオ講義や実践問題を通じて、ハンズオンで学ぶことができます。

また、学習を支援するために、専任のキャリアカウンセラーがいるほか、学習をサポートするSlackコミュニティも用意されています。

Aidemy Premiumでは、さまざまなプランが用意されており、月額料金や有効期限が異なります。

アイデミー(Aidemy Premium)の主なコース習得できるスキル
AIアプリ開発コースPython/HTML・CSS/Git/Flask(PythonのWEBアプリフレームワーク)/機械学習/WEBスクレイピング
データ分析コースPython/Pandas/Numpy/機械学習(教師あり・教師なし)/データクレンジング/時系列解析/ディープラーニング
自然言語処理コースPython/Pandas/Matplotlib/機械学習(教師あり・教師なし)/自然言語処理/ディープラーニング
ビジネスAI活用講座DX入門/AIマーケター育成コース/Python/Numpy/機械学習/AIリテラシー/ビジネスへのAI活用

 

運営元株式会社アイデミー
本社東京都千代田区神田小川町一丁目1番地 山甚ビル3F
料金プレミアムプラン
3ヶ月/327,800円(税込)〜
学習内容Python基礎・データ操作・アルゴリズムなど
受講形式オンライン

そのほかのPythonが学べるおすすめのプログラミングスクールは、こちらの記事で詳しく解説しているので、参考にしてみてください

>>>pythonを学ぶのにおすすめプログラミングスクールTOP5

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

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.