Telegram::GroupScraper - Telegram 公开频道与群组爬虫工具

爬虫工具概览
该爬虫工具用于采集 Telegram 公开频道和群组中的所有帖子和消息。
其工作逻辑与其他爬虫工具不同:它会自动遍历频道或群组中的消息。因此,不能在同一个任务中将其与其他爬虫工具结合使用。
结果中的行顺序不保证按帖子编号排列(取决于线程)。聊天/频道的元数据每个频道仅加载一次,并在帖子的每一行中重复显示。
得益于内置强大的 Template Toolkit 模板引擎,您可以按所需的格式和结构保存结果,该引擎允许对结果应用额外逻辑并以各种格式输出数据,包括 JSON、SQL 和 CSV。
爬虫工具应用案例
🔗 用户抓取
抓取 Telegram 公开群组的用户
🔗 抓取所有消息
抓取 Telegram 公开群组的所有消息
采集的数据
适用于公开频道和群组。
消息
- 帖子链接 (
url) - 帖子 ID (
post_id) - 不带
@的频道/群组用户名 (channel) - 带 HTML 的帖子文本 (
message_text) - 不带 HTML 的纯文本 (
message_text_plain) — 用于过滤、搜索和输出 - ISO 格式日期 (
message_date) - 浏览量 (
views) — 格式同 Telegram:15.5K、1.2M等;仅限频道,群组为空 - 视频提示 (
message_video_notice) — 如果帖子中有视频,但message_videos数组中没有 URL,且该字段已填充:则该视频只能在登录后的 Telegram 中查看(需要授权),没有直接的文件链接。这不是采集错误 — Telegram 不会在未登录账号的情况下提供此类视频
帖子作者
- 个人资料链接 (
user_link) - 名称 (
user_name) - 头像 URL (
user_avatar)
转发
- 转发自 (
forward_from) - 来源链接 (
forward_from_url) — 原帖 URL(如果可用) - 无链接时的说明 (
forward_from_notice) — 当forward_from_url为空时填充(例如 "Source link not available in embed"):表示没有直接链接,原帖可能已被删除、隐藏或因其他原因无法访问。这不是爬虫工具的错误
回复 (reply)
- 所回复消息的 URL (
reply_to_url) - URL 中的帖子 ID (
reply_to_post_id) - 原消息作者 (
reply_to_author) - 原消息纯文本 (
reply_to_text)
反应
- 反应总数 (
reactions_total) — 字符串形式的数字;K/M/B会被换算
聊天/频道元数据
每个频道加载一次,并重复显示在帖子的每一行中。
- 名称 (
chat_title) - 订阅者/成员数量 (
chat_members) - 在线人数 (
chat_online) — 仅限群组;开始采集该频道时刻的在线用户数,数据抓取过程中不更新。频道为空 - 纯文本描述 (
chat_description) - 媒体和链接计数器 (
chat_photos,chat_videos,chat_files,chat_links) — 仅限频道
数组
reactions — 包含 emoji、count 字段(格式同 Telegram:16、1.2K)。不采集谁留下了反应:仅提供表情符号类型和总数
message_photos — url 字段;相册会分为多行显示。
message_videos — url 字段。如果没有 URL 但帖子中有视频,请查看 message_video_notice(仅限登录 Telegram 后查看)
links — url 字段;帖子文本中的外部链接。不带路径的 t.me/username 格式链接不计入此处(这些属于 mentions)。
mentions — username 字段 (@username);来自 t.me/username 链接和 <a> 标签中的 @username 文本。
功能
- 灵活的查询归一化(参见 查询)
- 按日期过滤 (
dateFrom,dateTo) 和过滤转发消息 (skipForwards) - 照片和视频相册 — 同一帖子中包含多个 URL
使用场景
- 采集频道或群组的帖子内容
- 监控反应、浏览量和转发情况
查询
支持公开频道和群组。所有格式都会转换为 https://t.me/{username}:
| 查询 | 行为 |
|---|---|
@username | 频道或群组,从 Start message number 开始 |
username | 同上 |
https://t.me/username | 同上 |
t.me/username | 同上 |
https://t.me/s/username | 同上 |
https://t.me/username/123 | 频道或群组,从帖子 #123 开始(忽略 Start message number) |
无效查询 → 日志记录 Unknown query,结果为空。
示例:
https://t.me/a_parser
@a_parser
https://t.me/a_parser/100
结果输出示例
A-Parser 凭借内置的 Template Toolkit 支持灵活的结果格式化,这使其能够以任意形式以及结构化形式(如 CSV 或 JSON)输出结果。
默认输出
结果格式:
$channel/$post_id: $message_text_plain ($views views, $reactions_total reactions)
结果示例:
a_parser/1234: 这是过滤器) ( views, 0 reactions)
a_parser/85962: Google 推出了新的防护措施) ( views, 2 reactions)
输出到 CSV 表格
结果格式:
[% tools.CSVline(channel, post_id, message_text_plain, views, reactions_total) %]
结果示例:
a_parser,1234,"这是过滤器)",,0
a_parser,85962,"Google 推出了新的防护措施)",,2
过滤与跳过帖子
在以下情况下,行不会进入结果:
- 日期超出 Date from / Date to 范围
- 启用了 Skip forwards 且帖子是转发的
当按日期或转发过滤时,帖子被视为已找到,频道遍历将继续。
频道遍历在以下情况停止:
- 在最后一个找到的帖子之后,连续检查了 Max empty posts 个 ID 均无新发现;
- 或从开始起连续出现空帖子(如果尚未找到任何帖子)。
结果处理
A-Parser 允许在数据抓取过程中直接处理结果,在本节中我们列出了 Telegram 爬虫工具最受欢迎的案例。
按消息中的关键词过滤结果

需要添加过滤器并在下拉列表中选择 $message_text - Message text。选择类型 RegEx match。
在正则表达式字段中输入包含所需关键词的正则:
\b爬虫工具\b|\bGoogle\b|\byandex\b|\b爬虫工具\b|\b代理\b|\bDorks\b
\b - 单词边界
| - 或
is - 正则表达式标志
下载示例
eJyVVN1v2jAQ/18sHjaJ8qFSacobRaLaxEpX6BOg6oovqVfH9myHgTL+952dkMC6
PewhVu53v/v2uWQe3Jt7sOjQO5asSmbiP0uYR4mZhfyK6+0V7iE3ElmXGbAObeCu
2LKmJMmd1YVZbC0YtETimEIhPeuWzB8MkrdUSB9V5D5oEpajc5Dhs8c9EWvCsmJb
zMFvXwnegSwCsl6/rIvB6DqN5yCco+ocRuSmRtYvv+i70zqTWAsHUBz3tfAfToIw
TFvSNcYTzgw+nVNHLak2gIZElWjjhVZUinDsuNmcOuGm2lKxhHfMsFd3v1EuYIdL
XfUPW3hK0j3koTEdDh6DtpdGRx8+9nxsKHAuQkSQVYQwsjbqkxI/YmOVJi79WoFu
anUeJx8dBPBwym7FOlFm5KKItt8qG5akIB12maNUp0CJ8D81ggYLXtt57ADhJdNq
LOUMdyhbWvR/WwjJ6X6NUzL6XBv+nTJ/5+PYlHceaof2p6UcGi9Rup1/ba24numM
KudhUFLkwpPsJrpQYTADAt8QTdOz+9CzXFtswnhbYBOc1smg4kRsJzY2LXRRxcVU
LsGtVqnI5pS/FRxPzEItaWfnaqLDRoayVCElTcXhY3s7xq6eQhCayt8ZT2KIUPlp
Y5nXWroviypVYwXdvpuQYE6NPI9au9yClE+Ps3MNa28UCa/eG5f0+76XYx+eq/eD
BUOPmaYbRWUdN83D0rxF5b+el6Q80si+u4fKIBQY6IRRp1zcseHxN9yRrow=
可选设置
| 参数 | 默认值 | 描述 |
|---|---|---|
| Max empty posts | 1000 | 在找到最后一个帖子后,连续尝试多少个空 ID 后停止遍历频道。这不是已保存帖子的限制 |
| Start message number | 1 | 开始遍历的帖子编号(如果查询中没有 /123) |
| Skip forwards | ☐ | 不保存转发的消息 |
| Date from | 起始日期,包含。格式为 YYYY-MM-DD | |
| Date to | 截止日期,不包含。格式为 YYYY-MM-DD |