首頁 >後端開發 >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