6億6,600万人以上のアクティブ・ユーザーを有する。 ツイッター、または新ブランドのXTwitterは最も人気のあるソーシャルメディア・プラットフォームの1つであり、企業、研究者、個人にとって貴重な情報源である。しかし、膨大なTwitterデータから手作業でデータを抽出し、フィルタリングすることは圧倒的であり、機能的ではありません。

Twitterのスクレイピングは、ソフトウェアやスクリプトを使用してプラットフォームからデータを収集します。 このデータを分析することで、トレンドのトピックやハッシュタグ、会話、プラットフォーム上で起きているインタラクション、ユーザーの行動に関する貴重な洞察を得ることができる。
収集された情報は、センチメント分析、市場調査、ソーシャルメディアモニタリングなど、様々な目的のために綿密に分析することができる。この記事では こすり スクリプトからノーコードソフトウェアまで、既存の方法を使ったTwitterデータ、関連コスト、合法性と倫理的条件。
免責事項: 本資料は、情報提供のみを目的として作成されたものです。いかなる活動(違法行為を含む)、製品、サービスを推奨するものではありません。当社のサービスを利用する場合、またはここに記載されている情報に依拠する場合は、知的財産権法を含む適用法を遵守する責任を負うものとします。当社は、法律で明示的に義務付けられている場合を除き、いかなる方法であれ、当社のサービスまたはここに含まれる情報の使用から生じる損害について一切の責任を負いません。
目次
ツイッターから抽出できるデータの種類は?
様々なタイプのTwitterデータを抽出することができます。ここでは、Twitterスクレイピングのための3つの主要なデータタイプを紹介します:
- ツイート プロフィールに基づいてフィルタリングされたツイートから、「いいね!」、返信、リツイート、指定したURLなど、特定のデータを取得することができます。
- ユーザーのプロフィール ユーザーの経歴、プロフィールの説明、ツイート数、リツイート数、フォロワー数/フォロー数、プロフィール画像など、公開されているユーザープロフィールのあらゆるものが収集可能です。
- キーワード/ハッシュタグ 特定のキーワードやハッシュタグ、またはそれらの組み合わせを含むツイートを収集することができます。いいね!の数で絞り込んだり、特定の日時で検索することも可能です。
合法性と倫理的な利用規約
データスクレイピングの世界に飛び込む際には、法的および倫理的な境界線を理解することが不可欠である。
によると ツイッター規約 (デベロッパー規約およびポリシー)、明示的な許可なくデータをスクレイピングすることは禁止されており、Twitterのポリシーによって宣言されています:「Twitterの事前の同意なしに本サービスをスクレイピングすることは明示的に禁止されています。
これらの目的でTwitter APIを悪用した場合は、アクセスの停止や終了を含む強制措置の対象となります。
Twitterスクレイピングの一般的なガイド
Twitterスクレイピングについて簡単に紹介した後は、いよいよTwitterのデータをスクレイピングするプロセスを探ります。そこで、Twitterスクレイピングの簡単で包括的なガイドをまとめました。以下の手順に従ってください:
- まず、適切なスクレイピング・ツールを用意する必要がある。たくさんの選択肢から選ぶことができる。自分の予算と好みに合ったものを選びましょう。
- スクレイピングツールをダウンロードし、システムにインストールする。
- があることを確認する。 豊富な収納スペース お使いのデバイスで利用可能で、信頼できるインターネット接続があること。
- インストール後、Twitterアカウントの詳細を使ってログインします。
- Twitterからデータをスクレイピングするためのパラメータを調整することは、キーワード、ハッシュタグ、日時、場所、URLなどに基づいてデータを抽出することを可能にする重要なステップです。
- スクレイパーツールを実行すると、大量のデータが残ります。そのデータをさまざまなファイル形式(xlsx、CSV、JSONなど)にエクスポートできます。
- 最後のステップでは、エクスポートしたデータを分析して、関心のあるトピックに関する洞察を得る必要があります。
Twitterスクレイピングツールと方法
インターネット上で利用可能ないくつかのスクレイピングツールをレビューした。 ツイッタースクレーパー サードパーティのサービスやオープンソースのPythonライブラリまで、以下にリストアップした。
4.1.APIベースのTwitterスクレイパー
最初に取り上げるのは、APIベースのTwitterスクレイパーで、Twitter API V2、Apify、Brightdata、Scrapingdogなどがある。
4.1.1. Twitter API V2
Twitter API v2はTwitterのAPIの最新バージョンで、ソーシャルインタラクションを使ったアプリを開発する開発者や、特定の目的のためにデータを収集する研究者や個人にとって、公式かつ最も一般的に使用されているAPIの1つです。新しいAPIを使用することで、ソーシャルネットワーク上のライブの会話を簡単にモニタリングし、分析することができます。
最近、ツイッターは、エンドポイント、ツイート投稿のペイロードオプション、会話識別子セット、アノテーションなどの新機能を追加した。これらの変更は非常に印象的だ。しかし、新しい料金体系は、開発者やサードパーティアプリに深刻な懸念を抱かせている。新しい料金体系によって、サービスへのアクセスは劇的に減少し、価格は大幅に上昇した。
Twitter/X API v2の料金プランには3つのレベルがあります:無料、ベーシックエンタープライズ.
- 無料ティアでは、デベロッパーは以下の投稿が可能です。 月間1500ツイート書き込み専用で、Twitter APIのテスト用に設計されています。
- 基本料金 月額$100、月間3,000ツイートまで投稿可能。 ユーザーレベルで ツイート数50,000(閲覧制限10,000) アプリレベルで。
- エンタープライズ・タイヤには、ビジネス向けに設計されたより高度な機能が含まれています。しかし、エンタープライズ・プランでは、開発者/企業に対して、次のような法外な価格が請求されます。 月に約42000$.
4.1.2. アピファイ
ApifyのTwitter Scraperを通して、ハッシュタグ、スレッド、返信、画像など、公開されているTwitterデータから情報を抽出することができます。最近のツイッターの変更により、このプラットフォームでのツイートの閲覧やスクレイピングに新たな制限が設けられました。このスクレイパーは最新のツイートをスクレイピングすることはできないが、最も「いいね!」されたツイートを取得することはできる。抽出されたデータはHTML、JSON、Excel、CSV形式でアクセスできる。
以下の図は、アピファイによる月額サービス費用を示しています。また、年間プランには10%の割引があります。詳しくは アピファイ価格.

4.1.3. ブライト・データ

Bright Data is a data collection platform that offers web scraping tools such as proxy servers, APIs, and no-code solutions. Bright Data’s Web Scraper gives users the ability to extract data from public Twitter profiles, including images, videos, tweets, hashtags, and more.
月額500$(151000ページロード)からご利用いただけます。.Bright Data Twitter scraper データコレクターは、すべてのウェブサービスと互換性があり、データをエクセル形式で出力します。また、7日間のトライアルを提供しており、500ドルを支払う前にプラットフォームをテストすることができます。
Twitterスクレイパーを次のレベルに引き上げる準備はできていますか?
4.1.4. スクラップドッグ
Scrapingdogは、Twitterを含むあらゆるウェブサイトのスクレイピングを支援するウェブスクレイピングAPIです。ツイートIDを使ってツイートをスクレイピングしたり、公開ページをスクレイピングしてフォロワー数、フォロワー数、ウェブサイトリンクなどの詳細を抽出することができる。
Twitterのスクレイピングには1ページあたり0.0009$かかります。 標準プランでは、他のトップTwitterスクレイパーと比較して、価格以上の最高の価値の一つです。Scrapingdogは無料トライアルも提供している。Scrapingdogを使ったデータスクレイピング方法の詳細については、以下をご覧ください。 Twitter Scraping API ドキュメント.

4.2.TwitterスクレイピングのためのPythonライブラリとパッケージ
Twitter APIとApifyのようなアプリに慣れてきたところで、TwitterスクレイピングのためのPythonライブラリとパッケージを見てみましょう。
4.2.1. トゥイーピー
TweepyはオープンソースのPythonパッケージで、開発者はTwitterのエンドポイントにスムーズかつ透過的にアクセスできる。しかし、TwitterがX/Twitter APIに送信するリクエスト数に制限を課していることに注意する必要があります。 15分ごとに900件のリクエストが可能.このセクションでは、Tweepyの機能と簡単な例を紹介します。
まず、Python IDE上で "pip install Tweepy "コマンドを使ってTweepyパッケージをインストールし、Tweepyもインポートします。クライアント・アプリケーションをTwitterに登録するのが次のステップです。新しいアプリケーションを作成してください。登録が完了すると、ベアラートークンが発行されます。
|
1 2 |
ピップ install トゥイーピー インポート トゥイーピー |
次に、Twitter APIから取得したコンシューマー・ベアラ・トークンを渡すための "Client "インスタンスを作成しなければならない。
クエリー変数には、フィールド、言及、ハッシュタグを指定した。
|
1 2 3 |
クライアント = トゥイーピー.クライアント(ベアラートークン='bearer_token') クエリー = 'query @mentions #hashtags' |
過去7日間のツイートを検索するには、Tweepyで利用可能なsearch_recent_tweets機能を使用できます。探しているデータを指定するには、検索クエリを渡す必要があります。
|
1 2 |
最近のツイート = クライアント.検索_最近のツイート(クエリー=クエリー, ツイートフィールド=#91;'tweet_field_1', 'ツイート_フィールド_2'], 最大結果=100) |
学術研究プロダクトトラックへのアクセス権をお持ちの方は、7日以上前のツイートを取得することができます。一般公開されているツイートの完全なアーカイブから。
|
1 2 |
ツイート = クライアント.検索_すべてのツイート(クエリー=クエリー, ツイートフィールド=#91;'tweet_field_1', 'ツイート_フィールド_2'], 最大結果=100) |
以下のコードで結果をエクスポートできる。
|
1 2 3 4 5 |
にとって ツイート で ツイート.データ: プリント(ツイート.テキスト) もし レン(ツイート.コンテキスト注釈) > 0: プリント(ツイート.コンテキスト注釈) |
Tweepyには、より複雑で特殊なケースでさまざまなタスクを実行できる関数もたくさんある。
4.2.2. スネクレープ
APIに頼らずにツイッターから情報を取得するもう一つの方法は、Snscrapeを使うことだ。Snscrapeを使えば、ユーザーのプロフィール、ツイートの内容、ソースなどの基本的な情報を取得することができる。Tweepyとは異なり、スクレイプできるツイートの数やツイートの日付に制限はなく、古いTwitterデータも抽出できる。SnscrapeはTwitter APIに接続していないため、Tweepyのような機能はありません。詳しくは スネクレープ.
このセクションでは、PythonのSnscrapeを使ってTwitterからデータをスクレイピングする基本的な例も紹介する。
まず、Snscrapeをインストールしてください。Python 3.8以上がインストールされている必要があります。
|
1 2 |
ピップ install スネクレープ |
次のステップでは、以下のライブラリをインストールする。
|
1 2 3 |
インポート スネクレープ.モジュール.ツイッター として ツイッター インポート パンダ として ピーディー |
TwitterSearchScraper(query).get_items "関数を使ってクエリー(ここでは "query")を送信し、Twitterの検索バーの結果と同じように検索結果を取得する。
|
1 2 3 4 5 6 |
クエリー = 「クエリー にとって ツイート で ツイッター.TwitterSearchScraper(クエリー).アイテム(): プリント(バーズ(ツイート)) 休憩 |
Twitterからデータをスクレイピングするために使用できるメソッドは他にもある:TwitterSearchScraper, TwitterUserScraper, TwitterProfileScraper, TwitterHashtagScraper, TwitterTweetScraperMode, TwitterTweetScraper, TwitterListPostsScraper, TwitterTrendsScraper.
高度なスクレイピング技術と課題
基本的なスクレイピング手法がTwitterの高度な防御機能で限界に達すると、高度なテクニックが不可欠になります。Twitterの最新のインターフェースはJavaScriptのレンダリングに大きく依存し、ボット検知のための複数のレイヤーを実装しているため、従来のHTTPリクエストでは信頼性の高いデータ収集ができません。
ヘッドレス・ブラウザで動的コンテンツを扱う
TwitterのタイムラインはJavaScriptを通して動的にロードされます。ヘッドレスブラウザは実際のユーザーインタラクションをシミュレートし、JavaScriptをレンダリングし、動的なコンテンツのロードを処理します。
PlaywrightとSeleniumの比較:Playwrightは、より良いパフォーマンスと最新のウェブアプリケーションのより信頼性の高い処理を提供する。
ここでは、Playwrightを使って動的に読み込まれるツイートをスクレイピングする例を紹介する:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
インポート アシンシオ より 劇作家.async_api インポート async_playwright インポート json 非同期 デフ scrape_twitter_profile(ユーザー名): 非同期 と async_playwright() として p: # ヘッドレスブラウザの起動 ブラウザ = 待つ p.クロム.打ち上げ(ヘッドレス=真) コンテキスト = 待つ ブラウザ.新しいコンテキスト( ユーザーエージェント="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" ) ページ = 待つ コンテキスト.新しいページ() 試す: # プロフィールへ移動 待つ ページ.行く(f"https://twitter.com/{ユーザー名}") # ツイートの読み込みを待つ 待つ ページ.wait_for_selector('[data-testid="tweet"]', タイムアウト=10000) # スクロールして他のツイートを読み込む にとって i で 範囲(3): 待つ ページ.評価する("window.scrollTo(0, document.body.scrollHeight)") 待つ ページ.wait_for_timeout(2000) # ツイートデータを抽出 ツイート = 待つ ページ.評価する(""" () => { const tweetElements = document.querySelectorAll('[data-testid=")ツイート"]'); return Array.from(tweetElements).map(ツイート => {) const textElement = tweet.querySelector('[data-testid=""。ツイートテキスト"]'); const timeElement = tweet.querySelector('time'); を返す。 text: textElement ? textElement.innerText : ''、 timestamp: timeElement ? timeElement.getAttribute('datetime') : ''、 url: window.location.href }; }); } """) 戻る ツイート ただし 例外 として e: プリント(f「ユーザー名}のスクレイピングにエラーが発生しました:{e}") 戻る #91;] ついに: 待つ ブラウザ.閉じる() # 用途 ツイート = アシンシオ.走る(scrape_twitter_profile(「エロンマスク)) プリント(json.ダンプ(ツイート#91;:3], インデント=2)) |
主な利点 ヘッドレスブラウザには、JavaScriptレンダリングの処理、クッキーとセッションの自動管理、現実的なブラウザフィンガープリントによる基本的なボット検出の回避などが含まれる。
リソースに関する考慮事項:ヘッドレス・ブラウザは、単純なHTTPリクエストに比べてメモリとCPUを大幅に消費します。大規模な操作を行う場合は、複数のブラウザインスタンスを異なるサーバーで実行するか、ブラウザプールを使用することを検討してください。
スクレイピング対策を回避する
Twitterは、単純なレート制限にとどまらない高度なボット検知を採用しています。これらの対策を理解することで、効果的な対策を立てることができます。
一般的なスクレイピング対策
レート制限: Twitter monitors request frequency per IP address, implementing both short-term (requests per minute) and long-term (daily quotas) limits. Learn more in Web Scraping Rate Limiting: The Fix.
IPブロッキング:疑わしいIPアドレスは一時的または恒久的にブロックされる。データセンターのIPアドレスは、一般家庭のアドレスよりも監視の目が厳しい。
CAPTCHAの課題:CAPTCHA : ボット的な振る舞いが検出されたら自動的にCAPTCHAを提示。最新のCAPTCHAは、単純な画像認識だけでなく、行動分析も利用しています。
ブラウザ・フィンガープリント:ユーザーエージェント、画面解像度、インストールされているプラグイン、JavaScriptの実行パターンなど、ブラウザの特性を分析。
効果的な対策
委任状ローテーション戦略:RapidSeedboxのようなサービスを利用することで、正規のユーザートラフィックに見える住宅用IPプールへのアクセスを提供します。RapidSeedboxの690万を超えるIPネットワークからの住宅用プロキシは、データセンター用プロキシに比べて検出を大幅に減らすことができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
インポート ランダム インポート 時間 より イターツール インポート サイクル #プロキシローテーション設定 プロキシリスト = #91; "http://user:[email protected]:8080" ] プロキシサイクル = サイクル(プロキシリスト) デフ get_next_proxy(): 戻る 次のページ(プロキシサイクル) # スクレーパーに実装する 非同期 デフ スクレイプ・ウィズ・ローテーション(): にとって i で 範囲(10): プロシキ = get_next_proxy() # 新しいプロキシでブラウザ/セッションを設定する # スクレイピングリクエストの実行 # ランダムディレイの追加 待つ アシンシオ.睡眠(ランダム.ユニフォーム(5, 15)) |
ユーザーエージェントのローテーション:パターン検出を避けるために、ブラウザのシグネチャを変化させる。異なるブラウザやオペレーティングシステムからの実際のユーザーエージェント文字列を使用する。
|
1 2 3 4 5 6 7 8 9 |
USER_AGENTS = #91; 「Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0" ] デフ get_random_user_agent(): 戻る ランダム.選択(USER_AGENTS) |
行動パターン:遅延を変化させたり、スクロールパターンをリアルにしたり、時折スクレイピングを行わないなど、人間のブラウジング行動を模倣します。
セッション管理:適切なクッキー処理で一貫したセッションを維持し、同じIPからあまり多くの新しいセッションを作成しないようにします。
高度な検知回避
リクエスト・タイミング:レート制限に遭遇した場合、指数関数的バックオフを実施する。長い遅延から開始し、成功率に基づいて徐々に遅延を減らす。
ジオロケーションの一貫性:プロキシを使用する場合は、リクエストの地理的な一貫性を保つようにしてください。国間を急激に飛び越えないでください。
ブラウザ・フィンガープリント管理:undetected-chromedriverやステルスプラグインのようなツールを使用して、ブラウザフィンガープリントの有効性を低下させます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
より セレニウム インポート ウェブドライバ より セレニウム・ステルス インポート ステルス デフ ステルスドライバー(): オプション = ウェブドライバ.クロームオプション() オプション.add_argument("--ヘッドレス") オプション.add_argument("--サンドボックスなし") オプション.add_argument("--disable-dev-shm-usage") ドライバー = ウェブドライバ.クローム(オプション=オプション) ステルス(ドライバー, 言語=#91;"ja-US", "ja"], ベンダー=「グーグル社, プラットフォーム="Win32", webgl_vendor="インテル社", レンダラ=「インテルIris OpenGLエンジン, フィックス・ヘアライン=真, ) 戻る ドライバー |
エラー処理:一時的なブロック、永久的な禁止、技術的な問題を区別できる、優美なエラー処理を実装する。
RapidSeedboxのようなサービスのレジデンシャルプロキシ、適切なブラウザのステルス技術、現実的な行動パターンを組み合わせることで、検知リスクを最小限に抑えつつ、大規模なTwitterデータ収集のための強固な基盤を構築します。
Twitterのボット対策は進化し続けているため、スクレイピングを成功させるには、現在のプラットフォームの挙動に基づいてこれらのテクニックを継続的に適応させる必要があることを覚えておいてください。
よくある質問
Twitterのスクレイピングは法的にはグレーゾーンにある。ツイッターの利用規約は自動的なデータ収集を禁止しているが、公開されているデータのスクレイピングが自動的に違法になるわけではない。
法的リスクには以下が含まれる:
1.ユーザーコンテンツの著作権侵害
2.一部の法域におけるCFAA違反
3.個人データのGDPR対応問題
より安全なアプローチ:可能な限りTwitterの公式APIを使用し、大規模なプロジェクトでは法律顧問に相談し、合法的な研究目的であれば公開されているデータに集中する。
いや、でもコーディングの方が良い結果が得られる。
コードなしオプション:ブラウザ自動化ツールやビジュアルワークフロービルダーは、基本的なスクレイピングには有効だが、スピードや柔軟性には限界がある。
コーディング・ソリューション:PythonとSeleniumや特別なライブラリは、より大きなコントロール、より優れたボット対策、より高い成功率を提供します。
ベスト・アプローチ:あなたのニーズをテストするためのノーコードツールから始め、本格的なデータ収集のための基本的なPythonスクリプトを学びます。
Twitterの無料APIティアには厳しい制限がある:
1. 料金制限:毎月のリクエストノルマが非常に低い
2. 過去のデータ:最近のツイートに限定(通常は過去1週間)
3. 特徴:高度なアナリティクスやエンゲージメント・メトリクスがない
4. アクセス:申請承認が必要
ほとんどのリサーチやビジネスユースケースは無料ティアの制限を超えるため、有料プランか別の方法が必要になる。
Twitterの履歴データは、通常のブラウジングでは最近のコンテンツしか表示されないため、専用のツールが必要となる。
最高のツール: スネクレープ - 数年前のツイートから日付範囲をフィルタリングしてアクセスするPythonライブラリ。
その他のオプション:
1.TwitterScraperライブラリ
2.学術研究API(機関アクセスが必要)
3.サードパーティのヒストリカル・データ・サービス
チップ:ヒストリカル・スクレイピングは速度が遅く、ブロックを避けるために慎重にレートを制限する必要がある。
必須練習:
1. レート制限:リクエスト間隔は最短で1~2秒
2. robots.txtの尊重:プラットフォームのガイドラインに従う
3. データの最小化:必要な情報のみを収集する
4. 適切な遅延:IPローテーションとレジデンシャル・プロキシ
5. エラー処理:ブロックまたはレート制限された場合はスクレイピングを停止する
主要原則:Twitterのインフラとユーザーのプライバシーを尊重し、責任を持ってスクレイピングしてください。
まとめ
ツイッターは、ウェブ全体の社会学的情報源として価値がある。Twitterからスクレイピングされた情報を活用することで、売上を伸ばしたり、マーケティング戦略を改善したりするための計画を立てることができます。この記事では、ビジネスやリサーチに役立つデータを抽出するためのTwitterスクレイピングの様々な側面と方法について、詳しくご紹介しました。
まとめると、Twitter API v2に課せられた新たな制限と高いコストにより、最適なスクレーパーを選ぶことは難しいだろう。あなたは、Twitter APIのより高度な機能、またはTwitter APIに直接接続されているサードパーティのアプリやPythonライブラリ(Tweepy)の恩恵を受けることができます。
しかし、リクエストできる数は厳しく制限されている。一方、一般に公開されているデータをスクレイピングしようとする場合、基本的な機能でニーズを満たすのであれば、Snscrape Pythonライブラリのようなオプションは素晴らしい選択肢となる。

0コメント