Hoppa till huvudinnehåll

Telegram::GroupScraper - Scraper för offentliga kanaler och grupper i Telegram

Telegram

Översikt över scrapern

Denna scraper samlar in alla inlägg och meddelanden från offentliga kanaler och grupper i Telegram.

Arbetslogiken skiljer sig från andra scrapers: den går automatiskt igenom meddelanden i en kanal eller grupp. På grund av detta kan den inte användas tillsammans med andra scrapers i samma uppgift.

Ordningen på raderna i resultatet garanteras inte baserat på inläggsnummer (beror på trådar). Metadata för chatt/kanal laddas en gång per kanal och dupliceras på varje rad för inlägget.

Resultaten kan sparas i den form och struktur du behöver, tack vare den inbyggda kraftfulla mallmotorn Template Toolkit som gör det möjligt att tillämpa ytterligare logik på resultaten och exportera data i olika format, inklusive JSON, SQL och CSV.

Användningsfall för scrapern

Insamlade data

Fungerar med offentliga kanaler och grupper.

Meddelande

  • Länk till inlägget (url)
  • Inläggets ID (post_id)
  • Användarnamn för kanalen/gruppen utan @ (channel)
  • Inläggets text med HTML (message_text)
  • Samma text utan HTML (message_text_plain) — för filter, sökning och utmatning
  • Datum i ISO-format (message_date)
  • Visningar (views) — som i Telegram: 15.5K, 1.2M etc.; endast för kanaler, för grupper — tomt
  • Meddelande om video (message_video_notice) — om inlägget innehåller en video, men arrayen message_videos saknar URL, och detta fält är ifyllt: videon kan endast ses i Telegram under ditt eget konto (kräver auktorisering), det finns ingen direktlänk till filen. Detta är inte ett fel i insamlingen — Telegram lämnar inte ut sådana videor utan inloggning på ett konto

Författare till inlägget

  • Länk till profil (user_link)
  • Namn (user_name)
  • URL till avatar (user_avatar)

Vidarebefordran

  • Varifrån det vidarebefordrats (forward_from)
  • Länk till källan (forward_from_url) — URL till originalet, om tillgänglig
  • Förklaring vid saknad länk (forward_from_notice) — fylls i om forward_from_url är tom (t.ex. "Source link not available in embed"): direktlänk saknas, originalet kan ha raderats, dolts eller vara otillgängligt av annan anledning. Inte ett fel i scrapern

Svar (reply)

  • URL till meddelandet som besvaras (reply_to_url)
  • Inläggets ID från URL:en (reply_to_post_id)
  • Författare till ursprungsmeddelandet (reply_to_author)
  • Text från ursprungsmeddelandet, plain (reply_to_text)

Reaktioner

  • Summan av alla reaktioner (reactions_total) — siffra som sträng; K/M/B räknas om

Metadata för chatt/kanal

Laddas ner en gång per kanal, dupliceras i varje rad för inlägget.

  • Namn (chat_title)
  • Antal prenumeranter/medlemmar (chat_members)
  • Online (chat_online) — endast för grupper; antal användare online vid tidpunkten då insamlingen för kanalen påbörjades, uppdateras inte under dataskrapning. För kanaler — tomt
  • Beskrivning, plain text (chat_description)
  • Räknare för media och länkar (chat_photos, chat_videos, chat_files, chat_links) — endast för kanaler

Arrayer

reactions — fälten emoji, count (som i Telegram: 16, 1.2K). Vem som gett reaktionen samlas inte in: endast emoji-typ och totalt antal är tillgängliga

message_photos — fältet url; album — flera rader.

message_videos — fältet url. Om URL saknas men inlägget innehåller video — se message_video_notice (visning endast efter inloggning i Telegram)

links — fältet url; externa länkar från inläggets text. Länkar av typen t.me/username utan sökväg hamnar inte här (dessa är mentions).

mentions — fältet username (@username); från länkar t.me/username och texten @username i <a>.

Funktioner

  • Flexibel normalisering av frågor (se Frågor)
  • Filter efter datum (dateFrom, dateTo) och vidarebefordrade meddelanden (skipForwards)
  • Foto- och videoalbum — flera URL:er i ett inlägg

Användningsområden

  • Insamling av innehåll från inlägg i kanaler eller grupper
  • Övervakning av reaktioner, visningar och vidarebefordringar

Frågor

Offentliga kanaler och grupper stöds. Alla format konverteras till https://t.me/{username}:

SökfrågaBeteende
@usernamekanal eller grupp, start från Start message number
usernamesamma
https://t.me/usernamesamma
t.me/usernamesamma
https://t.me/s/usernamesamma
https://t.me/username/123kanal eller grupp, start från inlägg #123 (Start message number ignoreras)

Ogiltig fråga → rad i loggen Unknown query, tomt resultat.

Exempel:

https://t.me/a_parser
@a_parser
https://t.me/a_parser/100

Exempel på resultatutdata

A-Parser stöder flexibel formatering av resultat tack vare den inbyggda mallmotorn Template Toolkit, vilket gör att den kan mata ut resultat i valfri form, såväl som i strukturerad form, till exempel CSV eller JSON.

Standardutdata

Resultatformat:

$channel/$post_id: $message_text_plain ($views views, $reactions_total reactions)

Exempel på resultat:

a_parser/1234: detta är filter) ( views, 0 reactions)
a_parser/85962: Google har rullat ut något nytt skydd) ( views, 2 reactions)

Utdata till CSV-tabell

Resultatformat:

[% tools.CSVline(channel, post_id, message_text_plain, views, reactions_total) %]

Exempel på resultat:

a_parser,1234,"detta är filter)",,0
a_parser,85962,"Google har rullat ut något nytt skydd)",,2

Filtrering och hopp över inlägg

En rad hamnar inte i resultatet om:

  1. Datumet ligger utanför intervallet Date from / Date to
  2. Skip forwards är aktiverat och inlägget är vidarebefordrat

Vid filter efter datum eller forward betraktas inlägget som hittat, och genomgången av kanalen fortsätter.

Genomgången av kanalen stoppas när:

  • efter det senast hittade inlägget har Max empty posts antal ID:n i följd kontrollerats utan nya fynd;
  • eller en serie tomma inlägg från början (om inget inlägg hittats ännu).

Bearbetning av resultat

A-Parser gör det möjligt att bearbeta resultat direkt under dataskrapning. I det här avsnittet har vi listat de mest populära fallen för Telegram-scrapern.

Filtrering av resultat baserat på ord i meddelandet

Exempel

Du behöver lägga till ett filter och välja $message_text - Message text i rullgardinslistan. Välj typen RegEx match. I fältet för regex skriver du in ett reguljärt uttryck med de nödvändiga orden:

\bscraper\b|\bGoogle\b|\byandex\b|\bscraper\b|\bProxy\b|\bDorkar\b

\b - ordgräns

| - ELLER

is - regex-flagga

Ladda ner exempel

Hur man importerar ett exempel i 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öjliga inställningar

ParameterStandardvärdeBeskrivning
Max empty posts1000Hur många tomma ID:n i följd som ska testas efter det senast hittade inlägget innan genomsökningen av kanalen stoppas. Detta är inte en gräns för sparade inlägg
Start message number1Numret på inlägget som genomsökningen ska börja från (om /123 saknas i frågan)
Skip forwardsSpara inte vidarebefordrade meddelanden
Date fromDatum från, inklusive. Format YYYY-MM-DD
Date toDatum till, inte inklusive. Format YYYY-MM-DD