Ana içeriğe atla

Telegram::GroupScraper - Telegram halka açık kanal ve grup veri kazıyıcı

Telegram

Veri Kazıyıcı Genel Bakış

Veri kazıyıcı, Telegram'daki halka açık kanallardan ve gruplardan tüm gönderileri ve mesajları toplar.

Çalışma mantığı diğer veri kazıyıcılardan farklıdır: kanaldaki veya gruptaki mesajları otomatik olarak tarar. Bu nedenle, tek bir görevde diğer veri kazayıcılarla birlikte kullanılamaz.

Sonuçlardaki satır sırası, gönderi numarasına göre garanti edilmez (iş parçacıklarına bağlıdır). Sohbet/kanal meta verileri kanal başına bir kez yüklenir ve her gönderi satırında tekrarlanır.

Sonuçların ihtiyacınız olan biçimde ve yapıda kaydedilmesi, sonuçlara ek mantık uygulamanıza ve verileri JSON, SQL ve CSV dahil olmak üzere çeşitli formatlarda çıktı almanıza olanak tanıyan yerleşik güçlü şablon motoru Template Toolkit sayesinde mümkündür.

Veri Kazıyıcı Kullanım Örnekleri

Toplanan Veriler

Genel kanallar ve gruplarla çalışır.

Mesaj

  • Gönderi bağlantısı (url)
  • Gönderi ID'si (post_id)
  • @ işareti olmadan kanal/grup kullanıcı adı (channel)
  • HTML içeren gönderi metni (message_text)
  • HTML içermeyen aynı metin (message_text_plain) — filtreleme, arama ve çıktı için
  • ISO formatında tarih (message_date)
  • Görüntülenme sayısı (views) — Telegram'daki gibi: 15.5K, 1.2M vb.; sadece kanallar için, gruplarda boştur
  • Video bildirimi (message_video_notice) — gönderide video varsa ancak message_videos dizisinde URL yoksa ve bu alan doluysa: video yalnızca Telegram'da kendi hesabınızla izlenebilir (oturum açma gerektirir), dosyanın doğrudan bağlantısı yoktur. Bu bir veri çekme hatası değildir — Telegram bu tür videoları oturum açmadan vermez

Gönderi yazarı

  • Profil bağlantısı (user_link)
  • İsim (user_name)
  • Avatar URL'si (user_avatar)

Yönlendirme

  • Nereden yönlendirildi (forward_from)
  • Kaynak bağlantısı (forward_from_url) — mevcutsa orijinalin URL'si
  • Bağlantı olmadığında açıklama (forward_from_notice) — forward_from_url boşsa doldurulur (örneğin, "Source link not available in embed"): doğrudan bağlantı yoktur, orijinal silinmiş, gizlenmiş veya başka bir nedenle erişilemiyor olabilir. Veri kazıyıcı hatası değildir

Yanıt (reply)

  • Yanıtlanan mesajın URL'si (reply_to_url)
  • URL'den gönderi ID'si (reply_to_post_id)
  • Orijinal mesajın yazarı (reply_to_author)
  • Orijinal mesajın metni, düz metin (reply_to_text)

Reaksiyonlar

  • Tüm reaksiyonların toplamı (reactions_total) — dize olarak sayı; K/M/B birimleri dönüştürülür

Sohbet/kanal meta verileri

Kanal başına bir kez yüklenir, gönderinin her satırında yinelenir.

  • Başlık (chat_title)
  • Abone/üye sayısı (chat_members)
  • Çevrimiçi (chat_online) — sadece gruplar için; kanal için veri çekme başladığı andaki çevrimiçi kullanıcı sayısı, veri çekme sırasında güncellenmez. Kanallarda boştur
  • Açıklama, düz metin (chat_description)
  • Medya ve bağlantı sayaçları (chat_photos, chat_videos, chat_files, chat_links) — sadece kanallar için

Diziler

reactionsemoji, count alanları (Telegram'daki gibi: 16, 1.2K). Kimin reaksiyon bıraktığı toplanmaz: sadece emoji türü ve toplam sayı mevcuttur

message_photosurl alanı; albüm — birden fazla satır.

message_videosurl alanı. URL yoksa ancak gönderide video varsa — message_video_notice alanına bakın (yalnızca Telegram'a giriş yaptıktan sonra görüntülenebilir)

linksurl alanı; gönderi metnindeki harici bağlantılar. Yol (path) içermeyen t.me/username şeklindeki bağlantılar buraya dahil edilmez (bunlar mention'dır).

mentionsusername alanı (@username); t.me/username bağlantılarından ve <a> içindeki @username metninden.

Özellikler

  • Esnek sorgu normalizasyonu (bkz. Sorgular)
  • Tarihe göre filtreleme (dateFrom, dateTo) ve yönlendirilen mesajları atlama (skipForwards)
  • Fotoğraf ve video albümleri — bir gönderide birden fazla URL

Kullanım Durumları

  • Kanal veya grup gönderi içeriklerinin toplanması
  • Reaksiyonların, görüntülenmelerin ve yönlendirmelerin izlenmesi

Sorgular

Genel kanallar ve gruplar desteklenir. Tüm formatlar https://t.me/{username} şekline getirilir:

SorguDavranış
@usernamekanal veya grup, Start message number ile başlar
usernameaynısı
https://t.me/usernameaynısı
t.me/usernameaynısı
https://t.me/s/usernameaynısı
https://t.me/username/123kanal veya grup, #123 numaralı gönderiden başlar (Start message number yoksayılır)

Geçersiz sorgu → günlüğe Unknown query satırı yazılır, sonuç boş döner.

Örnekler:

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

Sonuç Çıktı Seçenekleri

A-Parser, yerleşik Template Toolkit şablon motoru sayesinde sonuçların esnek bir şekilde formatlanmasını destekler; bu da sonuçları rastgele bir formda veya CSV veya JSON gibi yapılandırılmış bir biçimde çıktı almasına olanak tanır.

Varsayılan çıktı

Sonuç formatı:

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

Sonuç örneği:

a_parser/1234: bunlar filtrelerdir) ( views, 0 reactions)
a_parser/85962: Google koruma konusunda yeni bir şeyler çıkardı) ( views, 2 reactions)

CSV tablosuna çıktı

Sonuç formatı:

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

Sonuç örneği:

a_parser,1234,"bunlar filtrelerdir)",,0
a_parser,85962,"Google koruma konusunda yeni bir şeyler çıkardı)",,2

Filtreleme ve gönderi atlama

Aşağıdaki durumlarda satır sonuca dahil edilmez:

  1. Tarih Date from / Date to aralığı dışındaysa
  2. Skip forwards etkinse ve gönderi yönlendirilmişse

Tarih veya yönlendirme filtresi uygulandığında gönderi bulunmuş sayılır, kanal taraması devam eder.

Kanal taraması şu durumlarda durur:

  • bulunan son gönderiden sonra üst üste Max empty posts kadar ID yeni bulgu olmadan kontrol edildiğinde;
  • veya başlangıçtan itibaren bir dizi boş gönderi olduğunda (henüz hiç gönderi bulunamadıysa).

Sonuçların İşlenmesi

A-Parser, sonuçları doğrudan veri çekme sırasında işlemenize olanak tanır; bu bölümde Telegram veri kazıyıcı için en popüler durumları sunduk.

Mesajdaki kelime varlığına göre sonuçları filtreleme

Örnek

Bir filtre eklemeniz ve açılır listeden $message_text - Message text seçmeniz gerekir. Tür olarak RegEx match seçin. Regex alanına gerekli kelimeleri içeren regex'i yazın:

\bveri kazıyıcı\b|\bGoogle\b|\byandex\b|\bveri kazıyıcı\b|\bProxy\b|\bDorklar\b

\b - kelime sınırı

| - VEYA

is - regex bayrağı

Örneği indir

A-Parser örnek nasıl içe aktarılır

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=

Olası Ayarlar

ParametreVarsayılan değerAçıklama
Max empty posts1000Son bulunan gönderiden sonra art arda kaç tane boş ID deneneceği ve ardından kanal taramasının durdurulacağı. Kaydedilen gönderi sınırı değildir
Start message number1Taramaya başlanacak gönderi numarası (eğer sorguda /123 yoksa)
Skip forwardsYönlendirilen mesajları kaydetme
Date fromBaşlangıç tarihi, dahil. Format YYYY-MM-DD
Date toBitiş tarihi, dahil değil. Format YYYY-MM-DD