twitterではスクレイピングを行うことを禁止しているため、スクレイピングをすることはあまりおすすめしません
しかし、pythonを使うことで、スクレイピングが禁止であるtwitterからスクレイピングと同じように情報を収集することが可能です
この記事では、pythonでtwitterからスクレイピング以外の方法で情報を収集するやり方を解説していきたいと思います
pythonでtwitterからツイートを取得したい
twitter APIの準備がめんどくさい
取得したツイートを解析してみたい
といった方に向けて、書いていきます!
以下の記事では、pythonでtwitterを使う方法をまとめて解説しているので、参考にしてみてください
pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります
コピペでOK!アフタフォロー付きのtwitter懸賞自動化コード
また、twitterアフィリエイトを自動化することもできます
コピペでOK!pythonを使ってtwitterアフィリエイトを自動化しよう
2023/5月に追記を行いました。Pythonを使ってTwitter APIを使わずに、Twitterをスクレイピングする方法を掲載しています
Contents
pythonでtwitterをスクレイピングする方法

twitterの規約ではスクレイピングを行うことは禁止されていますので、それ以外の方法でtwitterから情報を収集していきたいと思います
今回使用するのは「twint」と呼ばれるライブラリを使用していきます
twintを使用することで、以下のことが可能です
- 特定アカウントのツイートを取得
- 特定のトピックやハッシュタグ、トレンドに関連したツイートの取得
- メールや電話番号などの情報をツイートから取得
twitter APIを使用すれば、上記のことは可能ですが、APIの認証を取るまでが大変です

twintでできないこと
twintではbotの作成や自動いいね、リツイートなどは行うことができないので、twitter APIの取得が必要になります
twitter botを作成したい方は、pythonでtwitter botを作成する方法を以下の記事で解説しているので、そちらを参考にしてください

twintのメリット
twintとtwitter APIを比較すると、
- ほぼ全てのツイートを取得可能(twitter APIではmax3200ツイートまで)
- 初期設定が楽
- 匿名利用可能
- twitter未登録でも可能
twintのインストール
twintをインストールするには、ターミナル上で以下のコマンドを入力します
pip install twint
エラーが出た場合には、以下のように入力していきます
pip install --user --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint
上記コマンドを入力して、以下のように出力されればOKです
Successfully installed aiodns-2.0.0 aiohttp-3.7.4.post0 aiohttp-socks-0.6.0 async-timeout-3.0.1
cchardet-2.1.7 dataclasses-0.8 elasticsearch-7.11.0 geographiclib-1.50 geopy-2.1.0 googletransx-2.4.2
idna-ssl-1.1.0 multidict-5.1.0 pycares-3.1.1 python-socks-1.2.2 schedule-1.0.0 twint-2.1.21 typing-3.7.4.3 yarl-1.6.3
twintでツイートを取得

ツイートに含まれている特定のワードを検索して、ツイートを取得していきたいと思います
import twint
c = twint.Config()
c.Search = ''
c.Limit = 10
c.Store_csv = True
c.Output = "twitter_result.csv"
twint.run.Search(c)
これで「twitter_result.csv」というファイルが作成されていればOKです
インポートがtwintだけだとエラーになる場合もあります
そういう場合には、「import nest_asyncio」を入力するとうまくいきます
ツイートの取得だけであれば、twintでOKですが「いいね」や「リツイート」「自動フォロー」などを行いたい場合には、twitter APIを取得しないといけません
twitter APIの取得は一度認証されれば、複数アカウントで使用することができるので、取得するのがおすすめです

twitter-API-clientを使ってtwitterをスクレイピング
2023年に登場したtwitter-API-clientを使うことで、twitterをスクレイピングすることができます(2023/5月追記)
詳しいコードは以下のnoteにまとめているので、そちらを参考にしてもらえるいいです
ここでは簡単な説明だけします
pythonを使ったtwitter自動化-twitter懸賞自動応募で0→1突破実績あり・スクレイピング対応済み-
また、スクレイピングを行う際には自己責任でお願いします
twitter-api-clientを使う
有志の方がtwitter-api-clientを開発してくれているので、そちらを使用します
pip isntall twitter-api-client
スクレイピングにはScraper
スクレイピングを行うには、Scraperを使用します
from twitter.scraper import Scraper
Scraperを使用することで、さまざまなツイートデータを取得することができ、
例えば、トレンドやいいねしているツイートなどです
キーワード検索はSearch
指定のキーワードが含まれるツイートを検索したい場合には、Searchを使用します
from twitter.search import Search
Searchの使い方は、これまでのキーワード検索方法と同じで、任意のキーワードや最低いいね数、最低リツイート数などを設定することができます
general_results = search.run('(#dogs OR #cats) min_retweets:500')
twintを使わずにtwitterから情報収集する方法
twintはAPIを取得せずに利用することができますが、
twintを使わずにtwitterから情報収集するには、APIを取得してtweepyを使用していきます
tweepyで収集することができる情報は、以下のようなものです
- ツイートID
- ツイート時刻
- ツイート本文
- いいね数
- リツイート数
- ID
- ユーザー名
- アカウント名
- 自己紹介文
- フォロー数
- フォロワー数
- アカウント作成日時
- 自分のフォロー状況
- アイコン画像URL
- ヘッダー画像URL
- WEBサイト
tweepyについて詳しい内容は、こちらの記事でまとめているので、参考にしてください
tweepyが使えれば、twitterでおこなっている事の大半は行うことができます

tweepyを使ってtwitterの情報を収集する
以下のtwitter認証やsearch_wordを変更すれば、twitterでスクレイピングを行わずとも、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)
tweepyの検索・取得のオプション
search_wordの後ろにオプションを付け加えることができます
検索キーワード | 説明 |
キーワード -除外するキーワード | -の後に続くキーワードを除外して検索 |
キーワード min_faves:100 | いいねの数が100以上のツイートだけ |
キーワード min_retweets:100 | 100リツイート以上のツイートを検索 |
from:ユーザーネーム | 特定のユーザーのツイートを検索 |
キーワード1 OR キーワード2 | ブログもしくはブロガーのキーワードを検索 |
“キーワード” | ” “で囲われた文字列に完全一致するツイートを検索 |
pythonのスキルを高める方法

pythonのスキルを高めるには、pythonを学べるプログラミングスクールに通うのが一つの方法です
おすすめプログラミングスクール(無料体験あり)
こちらの記事では、pythonが学べて、無料体験できるおすすめのプログラミングスクールを紹介しているので、ぜひ参考にしてみてください
これから先、pythonを使える社会人は重宝される時代が来るので、今のうちに学んでおくと、社会に出た時に有利に働きます
スクールに通おうか、pythonを学ぼうか、どうしようか迷っているなら行動した方がいいです
僕は行動した結果、python関連で収益5桁いくようになりました
行動しなければ収益は0のままです
