前回の記事では、pythonでtwitterを扱うためにtwitter APIの取得方法について解説をしました
今回の記事では、
pythonでtwitterを操作してみたい
pythonでtwitterのbotを作成したい
という方向けに、pythonを使ったツイートの取得方法について解説していきます
もっと詳しく知りたい方は、以下の記事を参考にしてください
pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります
おすすめ書籍
Contents
pythonでtwitterを利用する
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:100 | 100リツイート以上のツイートを検索 |
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では「Python」のカリキュラムを4年前に作成して以来、常にアップデートを行っており、近年では業務効率化にも幅を広げています
人工知能やwebサービス・機械学習を学ぶ、プログラミング特化コースです。
.Proがおすすめなのは、
- プログラミング未経験だけど新しく挑戦したい
- 人とコミュニケーションをとるのが苦ではない
- すぐにでも転職できる実践型スキルを本気で身につけたい
といった人たちです
特に、.Proを受講する方の約9割はプログラミング未経験の方なので、初めてプログラミングに触れる、といった方でも安心して受講することが出来ます。
.Proの受講期間は6ヶ月と長期であるため、途中で挫折しないためにも、雰囲気を味わっておくことは重要です
.Proでは実際の授業の雰囲気も見ることができ、講義開催日である土曜日に対面での個別相談も開催されています。
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