Парсинг фото профилей участников группы



Чтобы спарсить фото профиля участника группы, в библиотеке 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) # скачать миниатюру


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: