#Python Twitterで自動的にTweetを集める。コードもついています。
どうも、夜中に記事を書いています。
いきなりのカミングアウトすみません。
Twitterで自動的にTweetを集める。
以前にも書いたのですが、少しいかがわしい内容でしたので、再投稿です。
まずはインポート!
import os
import csv
import datetime
import time
import tweepy
import schedule
TwitterのAPIキーを入力
CONSUMER_KEY = ' '
CONSUMER_SECRET = ' '
ACCESS_TOKEN = ' '
ACCESS_TOKEN_SECRET = ' '
こちらは、Twitter社から申請してパスワードを発行してください。全て英語でのやりとりなので少し難易度が高いかもしれません。
タブでそろえてくださいね。
def get_tweet(search_words):
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)tweets_list = []
for tweet in api.search(q=search_words, lang="ja", result_type="recent",count=100):
# 日本時間に変換
tweet_time = tweet.created_at + datetime.timedelta(hours=9)tweet_dic = {}
tweet_dic["text"] = tweet.text
tweet_dic["name"] = tweet.user.name
tweet_dic["twitter_id"] = "@" + tweet.user.screen_name
tweet_dic["time"] = tweet_time.strftime("%Y/%m/%d %H:%M:%S")tweets_list.append(tweet_dic)
return tweets_list
そして、
def save_tweet(csv_file_name, tweets_list):
# 指定されたcsvファイルが無ければ新規作成、あれば追記していく
with open(csv_file_name, "a", encoding="utf-8", newline="") as csv_file:
# header を設定
fieldnames = ["ツイート内容", "名前", "Twitter ID", "ツイート日時"]
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()for tweet in tweets_list:
# データの書き込み
writer.writerow({"ツイート内容": tweet["text"],
"名前": tweet["name"],
"Twitter ID": tweet["twitter_id"],
"ツイート日時": tweet["time"]})
さらに、
def run():
# 保存するcsvファイル名
csv_file_name = "任意.csv"
# 検索するワード
search_words = "任意ワード",try:
print("[DEBUG] Start saving tweet...")# ツイートの取得
tweets_list = get_tweet(search_words)
# csvファイルに書き込み
save_tweet(csv_file_name, tweets_list)print("[DEBUG] Finish!")
except:
print("[DEBUG] Skipped")
if __name__ == "__main__":
run()# 以後3分毎に定期実行
schedule.every(3).minutes.do(run)while True:
schedule.run_pending()
time.sleep(1)
これでTweetを集められますわー。
適当ですみません。