Telegram::GroupScraper - Parser für öffentliche Telegram-Kanäle und -Gruppen

Übersicht über den Parser
Der Parser sammelt alle Posts und Nachrichten aus öffentlichen Telegram-Kanälen und -Gruppen.
Die Funktionslogik unterscheidet sich von anderen Scrapern: Er durchläuft automatisch die Nachrichten in einem Kanal oder einer Gruppe. Aus diesem Grund kann er nicht zusammen mit anderen Scrapern in derselben Aufgabe verwendet werden.
Die Reihenfolge der Zeilen im Ergebnis ist nach Post-Nummer nicht garantiert (abhängig von den Threads). Chat-/Kanal-Metadaten werden einmal pro Kanal geladen und in jeder Zeile des Posts dupliziert.
Das Speichern der Ergebnisse ist in der von Ihnen benötigten Form und Struktur möglich, dank der integrierten leistungsstarken Template-Engine Template Toolkit, die es ermöglicht, zusätzliche Logik auf die Ergebnisse anzuwenden und Daten in verschiedenen Formaten auszugeben, einschließlich JSON, SQL und CSV.
Anwendungsbeispiele für den Parser
🔗 Benutzer-Datenerfassung
Datenerfassung von Benutzern aus öffentlichen Telegram-Gruppen
🔗 Datenerfassung aller Nachrichten
Datenerfassung aller Nachrichten aus öffentlichen Telegram-Gruppen
Gesammelte Daten
Funktioniert mit öffentlichen Kanälen und Gruppen.
Nachricht
- Link zum Post (
url) - Post-ID (
post_id) - Username des Kanals/der Gruppe ohne
@(channel) - Text des Posts mit HTML (
message_text) - Derselbe Text ohne HTML (
message_text_plain) — für Filter, Suche und Ausgabe - Datum in ISO (
message_date) - Aufrufe (
views) — wie in Telegram:15.5K,1.2Musw.; nur für Kanäle, bei Gruppen leer - Hinweis zum Video (
message_video_notice) — wenn im Post ein Video vorhanden ist, aber im Arraymessage_videoskeine URL vorhanden ist und dieses Feld ausgefüllt ist: Das Video kann nur in Telegram unter dem eigenen Account angesehen werden (Autorisierung erforderlich), es gibt keinen direkten Link zur Datei. Dies ist kein Fehler bei der Datenerfassung — Telegram gibt solche Videos nicht ohne Anmeldung im Account frei
Autor des Posts
- Link zum Profil (
user_link) - Name (
user_name) - URL des Avatars (
user_avatar)
Weiterleitung
- Woher weitergeleitet (
forward_from) - Link zur Quelle (
forward_from_url) — URL des Originals, falls verfügbar - Erläuterung bei fehlendem Link (
forward_from_notice) — wird ausgefüllt, wennforward_from_urlleer ist (z. B. „Source link not available in embed“): Es gibt keinen direkten Link, das Original könnte gelöscht, ausgeblendet oder aus einem anderen Grund nicht verfügbar sein. Kein Fehler des Parsers
Antwort (reply)
- URL der Nachricht, auf die geantwortet wurde (
reply_to_url) - Post-ID aus der URL (
reply_to_post_id) - Autor der ursprünglichen Nachricht (
reply_to_author) - Text der ursprünglichen Nachricht, plain (
reply_to_text)
Reaktionen
- Summe aller Reaktionen (
reactions_total) — Zahl als String;K/M/Bwerden umgerechnet
Metadaten des Chats/Kanals
Werden einmal pro Kanal geladen und in jeder Zeile des Posts dupliziert.
- Name (
chat_title) - Anzahl der Abonnenten/Mitglieder (
chat_members) - Online (
chat_online) — nur für Gruppen; Anzahl der Online-Nutzer zum Zeitpunkt des Beginns der Datenerfassung für den Kanal, wird während der Datenerfassung nicht aktualisiert. Bei Kanälen leer - Beschreibung, Plain Text (
chat_description) - Zähler für Medien und Links (
chat_photos,chat_videos,chat_files,chat_links) — nur für Kanäle
Arrays
reactions — Felder emoji, count (wie in Telegram: 16, 1.2K). Wer die Reaktion gesetzt hat, wird nicht erfasst: Nur der Emoji-Typ und die Gesamtzahl sind verfügbar
message_photos — Feld url; Album — mehrere Zeilen.
message_videos — Feld url. Wenn keine URL vorhanden ist, aber im Post ein Video existiert — siehe message_video_notice (Anzeige nur nach Login bei Telegram)
links — Feld url; externe Links aus dem Post-Text. Links wie t.me/username ohne Pfad werden hier nicht erfasst (dies sind Mentions).
mentions — Feld username (@username); aus Links t.me/username und Text @username in <a>.
Funktionen
- Flexible Normalisierung von Abfragen (siehe Abfragen)
- Filter nach Datum (
dateFrom,dateTo) und weitergeleiteten Nachrichten (skipForwards) - Foto- und Videoalben — mehrere URLs in einem Post
Anwendungsfälle
- Erfassung von Inhalten aus Kanal- oder Gruppenposts
- Monitoring von Reaktionen, Aufrufen und Weiterleitungen
Abfragen
Öffentliche Kanäle und Gruppen werden unterstützt. Alle Formate werden in https://t.me/{username} umgewandelt:
| Abfrage | Verhalten |
|---|---|
@username | Kanal oder Gruppe, Start bei Start message number |
username | dasselbe |
https://t.me/username | dasselbe |
t.me/username | dasselbe |
https://t.me/s/username | dasselbe |
https://t.me/username/123 | Kanal oder Gruppe, Start bei Post #123 (Start message number wird ignoriert) |
Ungültige Abfrage → Zeile im Log Unknown query, Ergebnis leer.
Beispiele:
https://t.me/a_parser
@a_parser
https://t.me/a_parser/100
Ausgabeoptionen für Ergebnisse
A-Parser unterstützt eine flexible Formatierung der Ergebnisse dank der integrierten Template-Engine Template Toolkit, was es ermöglicht, Ergebnisse in beliebiger Form sowie strukturiert, zum Beispiel als CSV oder JSON, auszugeben.
Standardausgabe
Format des Ergebnisses:
$channel/$post_id: $message_text_plain ($views views, $reactions_total reactions)
Beispiel für ein Ergebnis:
a_parser/1234: das sind Filter) ( views, 0 reactions)
a_parser/85962: Google hat etwas Neues zum Schutz herausgebracht) ( views, 2 reactions)
Ausgabe in eine CSV-Tabelle
Format des Ergebnisses:
[% tools.CSVline(channel, post_id, message_text_plain, views, reactions_total) %]
Beispiel für ein Ergebnis:
a_parser,1234,"das sind Filter)",,0
a_parser,85962,"Google hat etwas Neues zum Schutz herausgebracht)",,2
Filterung und Überspringen von Posts
Eine Zeile gelangt nicht in das Ergebnis, wenn:
- Das Datum außerhalb des Bereichs Date from / Date to liegt
- Skip forwards aktiviert ist und der Post weitergeleitet wurde
Bei einem Filter nach Datum oder Forward wird der Post als gefunden gezählt, die Durchsuchung des Kanals wird fortgesetzt.
Die Durchsuchung des Kanals stoppt, wenn:
- nach dem letzten gefundenen Post nacheinander Max empty posts IDs ohne neue Funde geprüft wurden;
- oder eine Serie leerer Posts von Anfang an (falls noch kein einziger Post gefunden wurde).
Verarbeitung der Ergebnisse
A-Parser ermöglicht es, Ergebnisse direkt während der Datenerfassung zu verarbeiten. In diesem Abschnitt haben wir die beliebtesten Anwendungsfälle für den Telegram-Parser aufgeführt.
Filtern der Ergebnisse nach Vorkommen von Wörtern in der Nachricht

Es muss ein Filter hinzugefügt und in der Dropdown-Liste $message_text - Message text ausgewählt werden. Wählen Sie den Typ RegEx match.
Geben Sie im Feld für den regulären Ausdruck den Ausdruck mit den erforderlichen Wörtern ein:
\bparser\b|\bGoogle\b|\byandex\b|\bparser\b|\bProxy\b|\bDorks\b
\b - Wortgrenze
| - ODER
is - Flag für regulären Ausdruck
Beispiel herunterladen
So importieren Sie ein Beispiel in 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=
Mögliche Einstellungen
| Parameter | Standardwert | Beschreibung |
|---|---|---|
| Max empty posts | 1000 | Wie viele leere IDs hintereinander nach dem letzten gefundenen Post versucht werden sollen, bevor das Crawlen des Kanals gestoppt wird. Dies ist kein Limit für gespeicherte Posts |
| Start message number | 1 | Nummer des Posts, mit dem der Crawl beginnen soll (wenn die Abfrage kein /123 enthält) |
| Skip forwards | ☐ | Weitergeleitete Nachrichten nicht speichern |
| Date from | Datum ab, einschließlich. Format YYYY-MM-DD | |
| Date to | Datum bis, nicht einschließlich. Format YYYY-MM-DD |