メインコンテンツへスキップ

Telegram::GroupScraper - Telegram公開グループデータスクレイパー

Telegram

スクレイパーの概要

このスクレイパーは、Telegramの公開グループからメッセージデータを収集します。Telegramグループ/チャットスクレイパーは、グループ内で発言したメンバー、またはグループへの参加に関するシステム通知があるメンバーの収集を実行します。テキスト、画像、動画へのリンク、投稿日、投稿者情報(名前、プロフィールリンク、アバター)など、必要なグループからすべてのコンテンツをスクレイピングできます。

このスクレイパーの動作ロジックは他のスクレイパーとは異なり、グループ内のすべてのメッセージを反復処理するためのクエリを自動的に追加します。そのため、このスクレイパーを1つのタスク内で他のスクレイパーと一緒に使用することはできません。

内蔵された強力なテンプレートエンジン Template Toolkit により、結果に独自のロジックを適用したり、JSON、SQL、CSVを含む様々な形式でデータを出力したりすることができ、必要に応じた形式と構造で結果を保存することが可能です。

スクレイパーの活用事例

収集可能なデータ

以下は、公開TelegramチャンネルとTelegramグループで個別に収集可能なデータです。

Telegramチャンネルで収集可能なデータ

公開(パブリック)Telegramチャンネルのみ、以下のデータが利用可能です:

  • メッセージへのリンク
  • メッセージテキスト
  • メッセージ内の写真
  • メッセージ内の動画
  • メッセージの投稿日

Telegramグループで収集可能なデータ

公開(パブリック)Telegramグループのみ、以下のデータが利用可能です:

  • メッセージへのリンク
  • メッセージ投稿者の名前
  • 投稿者のプロフィールリンク
  • 投稿者のアバター
  • メッセージテキスト
  • メッセージ内の写真
  • メッセージ内の動画
  • メッセージの投稿日
  • グループ内で発言したメンバー
  • 参加時のシステム通知に表示されるメンバー

ユースケース

  • グループメンバーリストの収集
  • グループ内の全メッセージ内容の収集

クエリ

クエリとして、公開(パブリック)チャンネルまたはグループのリンクを指定する必要があります。例:

https://t.me/a_parser

結果の出力例

A-Parserは、内蔵のテンプレートエンジン Template Toolkit により柔軟な結果フォーマットをサポートしており、任意の形式やCSV、JSONなどの構造化された形式で結果を出力できます。

デフォルト出力

結果フォーマット:

$user_name($user_link): $message_text\n

結果の例:

(https://t.me/aparser): 1つのIPからの10リクエスト制限を回避するには、メインページからkey=をさらに対象とする必要があります
(https://t.me/aparser): 今見てみます
(https://t.me/aparser): <a href="http://a-parser.com/threads/1795/" target="_blank" rel="noopener">http://a-parser.com/threads/1795/</a>

CSVテーブルへの出力

結果フォーマット:

[% tools.CSVline(query, user_link, message_date, message_text) %]

結果の例:

https://t.me/a_parser,https://t.me/Forby403,2016-11-05T05:01:09+00:00,"設定 - ウィンドウサイズを保存する"
https://t.me/a_parser,https://t.me/Forby403,2016-11-05T05:14:47+00:00,"300スレッドのタスクを20個、動的制限1200で実行しています。すべて同時に動作し、リクエスト(スレッド)が少なくなった時の詰まりがないため、はるかに速く完了します。"
https://t.me/a_parser,https://t.me/Forby403,2016-11-05T05:27:06+00:00,"プロキシなども含めて。"

結果の処理

A-Parserではスクレイピング中に結果を直接処理できます。このセクションでは、Telegramスクレイパーで最も一般的なケースを紹介します。

メッセージ内の単語の有無による結果のフィルタリング

例

フィルタを追加し、ドロップダウンリストから $message_text - Message text を選択します。タイプとして RegEx match を選択します。 正規表現フィールドに、必要な単語を含む正規表現を入力します:

\bスクレイパー\b|\bGoogle\b|\byandex\b|\bスクレイパー\b|\bプロキシ\b|\bドーク\b

\b - 単語の境界

| - または(OR)

is - 正規表現フラグ

サンプルをダウンロード

A-Parserへのサンプルのインポート方法

eJyVVN1v2jAQ/18sHjaJ8qFSacobRaLaxEpX6BOg6oovqVfH9myHgTL+952dkMC6
PewhVu53v/v2uWQe3Jt7sOjQO5asSmbiP0uYR4mZhfyK6+0V7iE3ElmXGbAObeCu
2LKmJMmd1YVZbC0YtETimEIhPeuWzB8MkrdUSB9V5D5oEpajc5Dhs8c9EWvCsmJb
zMFvXwnegSwCsl6/rIvB6DqN5yCco+ocRuSmRtYvv+i70zqTWAsHUBz3tfAfToIw
TFvSNcYTzgw+nVNHLak2gIZElWjjhVZUinDsuNmcOuGm2lKxhHfMsFd3v1EuYIdL
XfUPW3hK0j3koTEdDh6DtpdGRx8+9nxsKHAuQkSQVYQwsjbqkxI/YmOVJi79WoFu
anUeJx8dBPBwym7FOlFm5KKItt8qG5akIB12maNUp0CJ8D81ggYLXtt57ADhJdNq
LOUMdyhbWvR/WwjJ6X6NUzL6XBv+nTJ/5+PYlHceaof2p6UcGi9Rup1/ba24numM
KudhUFLkwpPsJrpQYTADAt8QTdOz+9CzXFtswnhbYBOc1smg4kRsJzY2LXRRxcVU
LsGtVqnI5pS/FRxPzEItaWfnaqLDRoayVCElTcXhY3s7xq6eQhCayt8ZT2KIUPlp
Y5nXWroviypVYwXdvpuQYE6NPI9au9yClE+Ps3MNa28UCa/eG5f0+76XYx+eq/eD
BUOPmaYbRWUdN83D0rxF5b+el6Q80si+u4fKIBQY6IRRp1zcseHxN9yRrow=
ヒント

こちらも参照してください:

設定可能な項目

パラメータデフォルト値説明
Max empty posts1000このパラメータは、現在のクエリのスクレイピングを停止するまでに、空の(存在しない)メッセージがいくつ連続する必要があるかを指定します
Start message number1このパラメータは、Telegramチャットのどの番号からメッセージの収集を開始するかを指定します