注:telegram 提供了相關的API,根據要求在相關網址上申請相關需要的參數,登錄telegram就可以抓取telegram數據了,申請主要是點點點,所以這裏省略
這裏默認你拿到相關的參數信息,直接上代碼
from telethon import TelegramClient, utils
from telethon.tl.types import InputMessagesFilterPhotos, InputMessagesFilterDocument
api_id = 1234567
api_hash = '75757892add13892757892add136e6a775789'
client = TelegramClient('Jian', api_id, api_hash)
channel = 'https://t.me/jeannieStudioGroup'
async def main():
# print('**********************send_message*****************************')
# # 發送消息
# await client.send_message('me', 'Hello to myself!')
print('*************************messages**************************')
messages = client.iter_messages(channel, limit=100)
msges = '';
async for message in messages:
msg = str(message.date) + '[' + str(utils.get_display_name(message.sender)) + ':' + str(message.message) + ']\n'
print(msg)
msges = msges + msg
with open('./telegram/messages.text', 'w') as file:
file.write(msges)
print('*************************photos**************************')
photos = await client.get_messages(channel, None, filter=InputMessagesFilterPhotos)
total = len(photos)
index = 0
for photo in photos:
filename = "./telegram/" + str(photo.id) + ".jpg"
index = index + 1
print("downloading:", index, "/", total, " : ", filename)
# 下載圖片
await client.download_media(photo, filename)
print('*************************files**************************')
files = await client.get_messages(channel, None, filter=InputMessagesFilterDocument)
for file in files:
attributes = file.media.document.attributes
# 文件
if len(attributes) == 1:
fileName = file.media.document.attributes[0].file_name
print(fileName)
# 圖片格式
if len(attributes) == 2:
fileName = file.media.document.attributes[1].file_name
print(fileName)
# 下載文件
await client.download_media(file, "./telegram/" + fileName)
with client:
client.loop.run_until_complete(main())