如何爬取Telegram群成员的ID、用户名及个人简介(Bio)
Telegram群成员信息爬取问题:无法正确获取个人简介(Bio)
问题描述
- 刚接触Python基础,已实现爬取Telegram用户的用户名、用户ID
- 尝试使用Telethon、Pyrogram框架爬取群成员的个人简介(Bio)时失败
- 尝试相关方法后,输出的用户ID、用户名正常,但个人简介位置显示
function get_user_bio at 0x7f xxxxxxxxx - 需要一个能同时获取用户ID、用户名及个人简介的可行方案
尝试的错误代码
from telethon.tl.functions.users import GetFullUserRequest async def get_user_bio(client, user): try: full_user = await client(GetFullUserRequest(user)) return full_user.full_user.about except ChatAdminRequiredError: # Get the user's bio bio = full_user.full_user.about
问题分析
- 语法错误:代码存在缩进错误、import语句换行错误、
except块为空且未捕获异常、变量作用域问题(full_user在try块外无法访问) - 函数调用错误:直接将
get_user_bio函数对象赋值给bio,而非调用函数(缺少()),导致输出函数内存地址
解决方案(Telethon完整实现)
以下是修正后的完整代码,可同时获取群成员的ID、用户名及个人简介:
from telethon import TelegramClient from telethon.tl.functions.users import GetFullUserRequest from telethon.errors import ChatAdminRequiredError, UserNotMutualContactError # 替换为你的API信息 API_ID = 123456 API_HASH = 'your_api_hash_here' SESSION_NAME = 'my_session' GROUP_LINK = 'https://t.me/your_group_link' # 或群ID async def main(): async with TelegramClient(SESSION_NAME, API_ID, API_HASH) as client: # 获取群对象 group = await client.get_entity(GROUP_LINK) # 遍历群成员 async for user in client.iter_participants(group): user_id = user.id username = user.username or "无用户名" bio = "无法获取简介" try: # 获取用户完整信息(包括Bio) full_user = await client(GetFullUserRequest(user.id)) bio = full_user.full_user.about or "无个人简介" except ChatAdminRequiredError: bio = "需要管理员权限才能获取简介" except UserNotMutualContactError: bio = "非双向联系人,无法获取简介" except Exception as e: bio = f"获取简介失败: {str(e)}" # 输出结果 print(f"用户ID: {user_id}, 用户名: {username}, 个人简介: {bio}") if __name__ == '__main__': import asyncio asyncio.run(main())
关键说明
- 确保已安装Telethon:
pip install telethon - 需要提前在Telegram官网申请API ID和API_HASH
- 部分隐私设置较高的用户或私有群组,可能需要管理员权限才能获取Bio,需做好异常处理
- 异步函数必须在异步事件循环中运行(通过
asyncio.run()启动)
内容的提问来源于stack exchange,提问作者sweet xento
相关产品推荐
相关产品推荐

