Python Kullanarak Telegram Kanal Verileri Nasıl Kazınır?

Yorumlar: 0

Telegram kanallarını kazıma işlemi, ister genel gruplardan ister özel topluluklardan olsun, bilgilerin otomatik olarak toplanmasını gerektirir. Python ve Telethon kütüphanesi aracılığıyla mesajlar, meta veriler, medya dosyaları, grup üyeleri ve çok daha fazlası alınabilir.

Web kazıma Telegram, ayrıntılı pazarlama araştırması yapmak, içeriği analiz etmek veya bir topluluktaki tartışma konularını takip etmek gibi çeşitli nedenlerle yapılabilir.

Sırada, Python kullanarak Telegram verilerinin nasıl kazınacağına dair ayrıntılı bir kılavuz var.

Adım 1: Gerekli Kütüphanelerin Kurulması

Peki, telegram kazımanın ilk adımı nedir? Kişi, ilgili kütüphaneler de dahil olmak üzere Python ortamını kurmalıdır. Ana API Telegram kazıma aracı, platformla etkileşime izin veren eşzamansız bir kütüphane olan Telethon'dur.

Yüklemek için komutu kullanın:


pip install telethon

Adım 2: Telethon Kütüphanesinin Yapılandırılması

Web kazıma Telegram API'si ile etkileşime girmeden önce, edinilmesi gereken kişisel bir API Kimliği ve Hash vardır.

  1. Telegram hesabınıza erişin ve kullanmak istediğiniz geliştirici hesabının telefon numarasını kullanarak giriş yapın.

    1.png

  2. Ardından, API geliştirme araçları bölümüne tıklayın.

    2.png

  3. Açılan yeni bir pencerede, uygulamanızla ilgili bilgileri girmeniz gerekmektedir. Yalnızca iki alan zorunludur. İsterseniz bunları değiştirebilirsiniz, ancak geri kalan alanlar isteğe bağlıdır.

    3.png

  4. Sonunda, "Uygulama oluştur "a tıklayın. API hash'inizin gizli olduğunu ve platformun bunu iptal etmenize izin vermeyeceğini unutmayın. Bu verileri hiçbir yerde yayınlamayın.

    4.png

API ve Hash'e sahip olduğunuzda, şimdi hesaba giriş yapmak için bir oturum oluşturmanız mümkündür.

Önemli! Telegram betiğini web kazıma yaparken, Python TelegramClient'ı içe aktarmaya çalışacağından ve ad çakışması nedeniyle başarısız olacağından, dosyanıza asla telethon.py adını vermeyin.

Hesabınıza giriş yapmak için önce yazın:


from telethon import TelegramClient

api_id = 12345678
api_hash = '0123456789abcdef0123456789abcdef'

with TelegramClient('anon', api_id, api_hash) as client:
   client.loop.run_until_complete(client.send_message('me', 'hello'))

İlk satırda, sınıfın bir örneğini oluşturmak için sınıf adını içe aktarıyoruz. Ardından API ve hash'imizi saklamak için değişkenler tanımlıyoruz.

Daha sonra, yeni bir TelegramClient örneği oluşturuyoruz ve buna client diyoruz. Artık client değişkenini herhangi bir şey için kullanabilirsiniz, örneğin kendinize bir mesaj göndermek gibi.

Adım 3: Bir Telegram Kanalı veya Grubu Seçme

Telegram kanallarını web kazımadan önce, veri toplama kaynağını tam olarak belirlemek gerekir. Platformda iki ana topluluk türü vardır: kanallar ve gruplar.

Özel bir kanala veya gruba erişmeniz gerekiyorsa, ona üye olmanız gerekir. Bazı toplulukların belirli sınırlamaları vardır ve / veya davetiye gerektirir ve bir Telegram kanalı kazıma işlemine başlamadan önce bu komplikasyonlar dikkate alınmalıdır.

Katılmak ve telegram kanal üyelerini ve diğer verileri kazımak için bir kanal veya grubun nasıl seçileceğine dair bir örnek düşünün:


from telethon import TelegramClient

api_id = 12345678
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('anon', api_id, api_hash)


async def main():
   me = await client.get_me()
   username = me.username
   print(username)
   print(me.phone)
   
   async for dialog in client.iter_dialogs():
       print(dialog.name, 'has ID - ', dialog.id)


with client:
   client.loop.run_until_complete(main())

Bu, istenen kanal veya grupla arayüz oluşturma açısından kritik olan ilgili kimlikleri içeren tüm konuşmalar dahil olmak üzere hesabınıza nasıl giriş yapacağınızı ve belirli erişimleri nasıl elde edeceğinizi gösterir.

Adım 4: Mesajları Kazıyın

API'de bir bağlantı kurmak, size gözünüzü diktiğiniz kanal veya grupla ilgili mesajları toplama özgürlüğü verir. Python Telegram kazıma yoluyla, katılımcılarla ilgili meta veriler de dahil olmak üzere çok sayıda metin mesajı, zaman damgası, medya elde etme şansına sahipsiniz.

İşte nasıl yapılacağına dair bir örnek:


from telethon import TelegramClient

api_id = 12345678
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('anon', api_id, api_hash)


async def main():
   id_client = 32987309847

   object = await client.get_entity(id_client)

   print(object.title)
   print(object.date)

   if object.photo:  # Profil fotoğrafı olup olmadığını kontrol edin
       await client.download_profile_photo(object, file="profile.jpg")

   # Tüm sohbet mesajlarını yazdırma
   async for message in client.iter_messages(id_client):
       print(f'{message.id}//{message.date} // {message.text}')

       # Tüm sohbet fotoğraflarını kaydet
       if message.photo:
           path = await message.download_media()
           print('File saved', path)


with client:
   client.loop.run_until_complete(main())

Gerekli ID'ye sahip olduğumuzda, mesajlara ve grubun ilgili meta verilerine erişebiliriz. Bundan sonra, grubun adı, oluşturulma tarihi, avatar (varsa), mesajlar ve yayınlanma tarihleriyle birlikte ilgili kimlikleri gibi bilgilere erişilebilir. Mesajlarda görüntü varsa, daha fazla işlem için mesajlarla birlikte otomatik olarak getirilebilirler.

Adım 5: Kazıyıcıyı Çalıştırın

Tüm parametreler ayarlandıktan sonra, Python Telegram kazıyıcı komut dosyası etkinleştirilebilir. Bazı ön testler tavsiye edilir; betiği büyük bir mesaj kümesi üzerinde çalıştırmak, tam ölçekli veri toplamaya geçmeden önce düzeltilmesi gereken çok sayıda sorunu ortaya çıkaracaktır.

Koşarken bu yönergelere uyduğunuzdan emin olun:

  • Kod gerekli tüm mesajları ve meta verileri topluyor mu?
  • Metin değerleri, tarih ve saat, mesaj kimlik numaraları ve medya dosyaları uygun şekilde yakalanıyor mu?
  • Telegram API isteklerinin uygulanmasıyla ilgili herhangi bir sorun var mı?

Herhangi bir sorun ortaya çıkarsa, bunlar genellikle istekler arasında duraklatılarak veya kanalın veya grubun gerçekten kullanılabilir olduğunu onaylayarak çözülebilir.

Adım 6: Telegram'ı Web Kazıma Sırasında Ek Kazıma Seçenekleri

Temel veri toplama otomatikleştirildikten sonra, kazıyıcı özellik setini genişletmek ve yeni veri toplama yetenekleri eklemek mümkün hale gelir.

  1. Bir kanaldaki veya gruptaki kullanıcıların tam adları, kimlik numaraları ve kişisel durumları gibi ayrıntılarının çıkarılması. Bu, kullanıcı etkileşimini değerlendirmek veya belirli önemli kullanıcıları izlemek için kullanışlıdır.
  2. Belirli kelimelere ve tarih aralığına göre filtreleme yoluyla mesajların seçilmesi. Veri toplamayı belirli kelimeler içeren veya belirli zaman dilimlerinde gönderilen mesajlarla sınırlamak bazen önemlidir. Bu, toplanan verilerin ilgili olmasını ve belirlenen şartları yerine getirmesini sağlar.
  3. Ek meta verilerin toplanması. Metin mesajları ve multimedya dosyalarını içeren birincil verilerin yanı sıra, bir mesajın aldığı toplam tepki sayısı, bir mesajın kaç kez iletildiği ve anketlerin varlığı gibi diğer meta veriler de toplanabilir.

from telethon import TelegramClient

api_id = 12345678
api_hash = '0123456789abcdef0123456789abcdef'

client = TelegramClient('session_name', api_id, api_hash)


async def main():
   channel = await client.get_entity(-4552839301)

   # Kanaldaki son 100 mesajı alın
   messages = await client.get_messages(channel, limit=100)

   # Mesajları anahtar kelimelere göre filtreleme
   keyword = 'Hello'
   filtered_messages = [msg for msg in messages if keyword.lower() in msg.text.lower()]

   for message in filtered_messages:
       print(f"Message: {message.text}")
       print(f"Date: {message.date}")
       print(f"Sender: {message.sender_id}")

   # Kanal katılımcılarını alın
   participants = await client.get_participants(channel)
   for participant in participants:
       print(f"Participant ID: {participant.id}, Username: {participant.username}")


with client:
   client.loop.run_until_complete(main())

Adım 7: API Oran Sınırlarını Yönetme

Telegram'ın API'si ile çalışırken, belirli bir süre boyunca yapılabilecek çağrı sayısının sınırlandırıldığını akılda tutmak çok önemlidir. Sürekli olarak çok fazla mesaj göndermek, platformun API'ye erişimi kısıtlamasına veya sunucu yanıt verme hızını düşürmesine neden olacaktır.

Bu sorunları hafifletmek için vekillerin kullanılması tavsiye edilmektedir:


import random
import socks
from telethon import TelegramClient

# Mevcut vekillerin listesi
proxy_list = [
   ("res.proxy-seller.com", 10000, socks.SOCKS5, True, "user1", "pass1"),
   ("res.proxy-seller.com", 10001, socks.SOCKS5, True, "user2", "pass2"),
   ("res.proxy-seller.com", 10002, socks.SOCKS5, True, "user3", "pass3"),
]

# Rastgele bir proxy seçin
proxy = random.choice(proxy_list)

try:
   client = TelegramClient('anon', api_id, api_hash, proxy=proxy)
   print(f"Successfully connected through proxy: {proxy}")
except (OSError, ConnectionError, TimeoutError, ValueError) as e:
   print(f"Proxy error: {e}, trying without it")
   client = TelegramClient('anon', api_id, api_hash)

Sonraki her bağlantı için yeni bir proxy sunucusunun kullanıldığı ve etkin bir şekilde bağlantı kuran proxy zincirleri uyguladık. Bu strateji, web kazıma Telegram API erişiminin kısıtlanma olasılığını en aza indirir ve sınırlı bağlantı hızı olasılığını ortadan kaldırarak komut dosyalarının güvenilir bir şekilde çalışmasını sağlar.

Neden Telegram Kazıma?

Python ile Telegram kazıma, platform başka hiçbir yerde bulunmayan türden bir verinin değişen bir ödülüne ev sahipliği yaptığı için çok sayıda sektörde kullanılabilir.

Temel uygulama alanları şunlardır:

  • Pazarlama araştırması. Trendleri, izleyici ilgi alanlarını ve rakipleri analiz etme.
  • İçerik izleme. Gruplardan ve kanallardan gelen mesajların toplanması ve analiz edilmesi.
  • Kullanıcı analizleri. Topluluk katılımcılarının davranışlarını incelemek.
  • Otomasyon. Sohbet robotlarında ve bildirim sistemlerinde kullanılmak üzere mesajların toplanması ve işlenmesi.

Gerçekten de, bir Telegram kanal kazıyıcı kullanarak, gerekli verileri otomatik olarak elde edebilir ve daha fazla analizini basitleştirebilirsiniz.

Web Kazıma Telgrafı: Sonuç

Bu kez, Telegram'ı Python ile kazıma ve seçilen topluluklardan içerik çıkarma zorluğunun üstesinden geldik. Proxy'leri kullanmak, kesintisiz yürütme sağlamak için önemli bir odak noktası olmuştur. Telethon kütüphanesi kuruldu, API etkinleştirildi, gerekli kanallar veya gruplar seçildi ve mesajlar, medya ve meta veriler alındı.

Python ile bir web kazıma Telegram'ı kullanmak, pazarlama araştırması, içerik analizi ve hatta kullanıcı etkinliği izleme için veri toplama otomasyonuna izin verir. Platform tarafından getirilen kısıtlamaları aşmak için, hesap rotasyonu, proxy kullanımı, VPN'ler veya istekler arasında dinamik zaman aşımları da dahil edilebilir. Ayrıca, platformun politikalarını ihlal etmekten kaçınmak için etik sınırların yanı sıra yasalara da uymak gerekir.

Yorumlar:

0 yorumlar