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.
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
Web kazıma Telegram API'si ile etkileşime girmeden önce, edinilmesi gereken kişisel bir API Kimliği ve Hash vardır.
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.
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.
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.
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:
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.
Temel veri toplama otomatikleştirildikten sonra, kazıyıcı özellik setini genişletmek ve yeni veri toplama yetenekleri eklemek mümkün hale gelir.
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())
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.
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:
Gerçekten de, bir Telegram kanal kazıyıcı kullanarak, gerekli verileri otomatik olarak elde edebilir ve daha fazla analizini basitleştirebilirsiniz.
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