首页 >后端开发 >Python教程 >抓取新的 Telegram 频道

抓取新的 Telegram 频道

Barbara Streisand
Barbara Streisand原创
2024-11-09 22:12:02369浏览

Scraping New Telegram Channels

使用 Python 和 GroupFind API 每天抓取新的 Telegram 频道

Telegram 频道每天都在增长,找到最新的频道可以让您深入了解热门社区和热门话题。使用 GroupFind API,我们可以轻松地每天提取新频道并将其保存到 CSV 中以供分析或监控。在本教程中,我将引导您完成一个简单的 Python 脚本来自动执行此过程。

群组查找 API

GroupFind API 提供了一个用于检索新列出的 Telegram 群组的端点:

https://api.groupfind.org/api/groups?skip=0&sort=newest

此端点返回 JSON 格式的数据,包含 groupTitle、category、memberCount、tags 等字段。我们将使用这些数据来构建 CSV,并每天更新新列表。

设置 Python 脚本

让我们首先导入必要的库并设置一个函数来提取最新数据并将其保存到 CSV 文件。

第 1 步:导入所需的库

import requests
import csv
from datetime import datetime
import time

第 2 步:定义获取和保存数据的函数

在这里,我们将设置一个函数:

  1. 向 API 发出 GET 请求。
  2. 提取相关数据。
  3. 写入或附加到 CSV 文件。
def fetch_and_save_new_telegram_channels():
    url = "https://api.groupfind.org/api/groups?skip=0&sort=newest"
    response = requests.get(url)

    if response.status_code == 200:
        channels = response.json()

        filename = "new_telegram_channels.csv"
        fieldnames = [
            "ID", "Title", "Category", "Member Count", "NSFW", 
            "Description", "Tags", "Profile Photo URL", "Added Date"
        ]

        with open(filename, mode="a", newline="", encoding="utf-8") as file:
            writer = csv.DictWriter(file, fieldnames=fieldnames)

            if file.tell() == 0:
                writer.writeheader()  # Write header only once

            for channel in channels:
                writer.writerow({
                    "ID": channel["id"],
                    "Title": channel["groupTitle"],
                    "Category": channel["category"],
                    "Member Count": channel["memberCount"],
                    "NSFW": channel["isNsfw"],
                    "Description": channel["groupDescription"],
                    "Tags": ", ".join(channel["tags"]),
                    "Profile Photo URL": channel["profilePhoto"],
                    "Added Date": channel["addedDate"]
                })

        print(f"Successfully added {len(channels)} new channels to {filename}.")
    else:
        print("Failed to fetch data. Status code:", response.status_code)

第 3 步:使用调度程序自动执行每日抓取

为了让这个脚本每天自动运行,为了简单起见,我们可以使用 Python 的内置时间模块,或者将其设置为服务器上的 cron 作业。

def run_daily():
    while True:
        print(f"Running script at {datetime.now()}")
        fetch_and_save_new_telegram_channels()
        time.sleep(86400)  # Wait for 24 hours

运行脚本

只需运行该脚本,它就会每天获取新的 Telegram 频道,并将它们附加到 new_telegram_channels.csv 中。该文件将随着时间的推移积累数据,提供不断增长的新 Telegram 社区记录。

if __name__ == "__main__":
    run_daily()

以上是抓取新的 Telegram 频道的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn