Чтобы спарсить фото профиля участника группы, в библиотеке Telethon имеется специальный метод .download_profile_photo(‘user’, ‘name_photo’), который принимает два обязательных параметра:
user — параметр, указывающий на конкретного пользователя, у которого мы хотим скачать фото, name_photo — имя сохраняемого файла, расширение указывать не обязательно, т.к. файл по умолчанию сохраняется в формате .jpg. Укажите другое расширение если необходимо, и файл будет сохранен именно в нем.
В коде ниже мы воспользовались менеджером контекста with/as для удобства, подобная конструкция должна быть вам знакома, ее мы активно использовали в модуле Selenium.
Запустите код ниже, чтобы скачать фото определенного пользователя. Имя пользователя можно указать с @ или без нее.
from telethon import TelegramClient, events, sync, connection r_api = 1111 r_hash = '' with TelegramClient('my', r_api, r_hash, system_version="4.10.5 beta x64") as client: client.download_profile_photo('name_user', 'photo.png')
Чтобы скачать фото сразу всех участников группы, необходимо сперва получить всех, кто состоит в группе, затем в цикле получать доступ к профилю и применять метод .download_profile_photo(‘user’, ‘name_photo’).
from telethon import TelegramClient, events, sync, connection r_api = 11111 r_hash = '' with TelegramClient('my', r_api, r_hash, system_version="4.10.5 beta x64") as client: participants = client.get_participants('t.me/test_group') for i, user in enumerate(participants): client.download_profile_photo(user, f'{i}') #f'img/{i}' используйте для указания пути сохранения файлов
В коде выше мы применили уже знакомый вам метод client.get_participants(), который возвращает список всех пользователей. После этого в цикле применяем метод .download_profile_photo(‘user’, ‘name_photo’) чтобы, скачать поочерёдно фото с каждого профиля. Так же применили встроенную функцию enumerate() для именования скачанных файлов.
По умолчанию метод .download_profile_photo() имеет параметр download_big= положение которого влияет на то, какое фото профиля будет скачано, большое или маленькое. download_big=True — скачает полноразмерное фото, а download_big=False скачает миниатюру фото профиля.
client.download_profile_photo(user, f'img/{i}', download_big=True) # скачать полноразмерное фото профиля client.download_profile_photo(user, f'img/{i}', download_big=False) # скачать миниатюру