使用Telethon爬取Telegram时如何获取位置共享消息的经纬度
你使用的是Telethon库实现Telegram数据爬取,提取位置共享消息的经纬度可按如下逻辑实现:
Telegram的位置共享消息分为单次静态位置和实时共享位置两类,均存储在消息的media属性中,两类消息的geo属性下都包含经纬度字段。
实现代码
首先先引入对应消息类型:
from telethon.tl.types import MessageMediaGeo, MessageMediaGeoLive
修改遍历逻辑如下:
for message in client.iter_messages('John'): # 判断是否为位置共享消息 if isinstance(message.media, (MessageMediaGeo, MessageMediaGeoLive)): # 提取经纬度 lat = message.media.geo.lat lon = message.media.geo.long print(f"位置消息:纬度 {lat},经度 {lon}") else: # 非位置消息走原有文本打印逻辑 print(message.text)
补充说明
- 若无需处理实时共享位置,仅需提取用户主动发送的单次静态位置,可将判断条件中的
MessageMediaGeoLive删除即可 - 如果你使用的Telethon版本较旧出现属性报错,可直接打印
message.media查看返回结构,对应调整字段名即可
内容的提问来源于stack exchange,提问作者Vedha Vikash
相关产品推荐
相关产品推荐

