如何使用Telethon从Telegram用户消息中提取JSON格式数据
你通过client.get_messages拿到的是Pyrogram库的原生Message对象,不需要解析打印出来的序列化字符串,直接读取对象属性即可拿到需要的所有内容。
1. 基础提取消息文本
# 从bot获取1条最新消息 messages = client.get_messages('bot_name', limit=1) # 读取消息文本内容 target_msg = messages[0] msg_content = target_msg.text print(msg_content)
2. 结构化提取文本内的字段
可以用正则匹配把文本里的手机号、归属地等信息提取成结构化字典:
import re # 定义字段匹配规则 field_rules = { "手机号": r"Номер: (\d+)", "国家": r"Страна: (.+)", "地区": r"Регион: (.+)", "运营商": r"Оператор: (.+)", "关联姓名": r"Возможные имена:\n└ (.+)", "姓名查询状态": r"ФИО: (.+)", "地址查询状态": r"Возможные адреса: (.+)", "VK查询状态": r"Вконтакте: (.+)", "出生日期查询状态": r"Дата рождения: (.+)", "Facebook查询状态": r"Facebook: (.+)", "Telegram查询状态": r"Telegram: (.+)", "Whatsapp状态": r"Whatsapp: (.+)", "Viber状态": r"Viber: (.+)", "关联广告数": r"Объявлений: (.+)", "查询过该信息的人数": r"Интересовались: (.+)", "声誉评分": r"Репутация: (.+)" } extract_result = {} for field, rule in field_rules.items(): match_res = re.search(rule, msg_content) if match_res: extract_result[field] = match_res.group(1).strip() print(extract_result)
3. 提取消息内的Inline按钮内容
如果需要获取按钮的回调数据或者跳转链接,可以直接从reply_markup属性读取:
if hasattr(target_msg, 'reply_markup'): for row in target_msg.reply_markup.rows: for btn in row.buttons: btn_text = btn.text # 回调按钮读取data属性 if hasattr(btn, 'data'): btn_callback = btn.data.decode("utf-8") print(f"按钮:{btn_text},回调参数:{btn_callback}") # 跳转按钮读取url属性 elif hasattr(btn, 'url'): btn_url = btn.url print(f"按钮:{btn_text},跳转地址:{btn_url}")
内容的提问来源于stack exchange,提问作者hatoritotori
相关产品推荐
相关产品推荐

