ToniBlog.net
ToniBlog.netBlog Chia Sẻ Kỹ Thuật, Lập Trình Web & Tối Ưu VPS
#Python#telegram

Hướng Dẫn Cào Dữ Liệu Python Telegram Bot Trong 15 Phút

admin
•
11 tháng 10, 2026
•
7 phút đọc

Để viết script **cào dữ liệu Python Telegram Bot** tự động trong 15 phút, bạn cần khởi tạo Telegram Bot qua BotFather để lấy API token, sử dụng thư viện BeautifulSoup4 (cho web tĩnh) hoặc Playwright (cho web render JavaScript) để bóc tách dữ liệu, kết nối Telegram API gửi tin nhắn định dạng HTML và đóng gói Docker container chạy ngầm 24/7 trên VPS.

Tóm Tắt Nhanh (AEO Direct Answer)

Để viết script **cào dữ liệu Python Telegram Bot** tự động trong 15 phút, bạn cần khởi tạo Telegram Bot qua BotFather để lấy API token, sử dụng thư viện BeautifulSoup4 (cho web tĩnh) hoặc Playwright (cho web render JavaScript) để bóc tách dữ liệu, kết nối Telegram API gửi tin nhắn định dạng HTML và đóng gói Docker container chạy ngầm 24/7 trên VPS.

Giới Thiệu: Giải Phóng Sức Lao Động Khi Cào Dữ Liệu Python Telegram Bot

Trong công việc hàng ngày, chắc hẳn anh em lập trình viên hay Webmaster đều từng trải qua cảm giác mệt mỏi khi phải: **Ngồi F5 liên tục một trang web để canh giá sản phẩm giảm, theo dõi bài viết mới trên forum, hoặc kiểm tra xem mã giảm giá hosting/domain có còn hoạt động hay không.**

Thay vì tốn thời gian thao tác thủ công rủi ro, chúng ta hoàn toàn có thể tự xây dựng một hệ thống **cào dữ liệu Python Telegram Bot** tự động hóa 100%. Mỗi khi trang web mục tiêu có thay đổi hoặc xuất hiện thông tin thỏa mãn điều kiện, một tin nhắn thông báo kèm đường dẫn và hình ảnh đẹp mắt sẽ được gửi thẳng về ứng dụng Telegram trên điện thoại của bạn ngay lập tức.

Để vận hành bot chạy liên tục 24/7 mà không cần bật máy tính cá nhân, bạn chỉ cần một **máy chủ VPS NVMe SSD giá rẻ** (chỉ từ $2.29 – $3.5/tháng) để treo Docker container.

1. Mô Hình Kiến Trúc Hệ Thống Cào Dữ Liệu Python Telegram Bot

Sơ đồ thể hiện luồng hoạt động tự động của hệ thống từ khâu cào dữ liệu đến khi đẩy thông báo về điện thoại:

Luồng hoạt động

Đang tải sơ đồ Mermaid...

2. Khởi Tạo Telegram Bot & Lấy Token Trong 3 Phút

### Bước 1: Tạo Bot Mới Với BotFather
1. Mở ứng dụng Telegram trên điện thoại hoặc máy tính, tìm kiếm tài khoản chính thức `@BotFather`.
2. Gửi lệnh `/newbot` vào khung chat.
3. Nhập tên hiển thị cho Bot (ví dụ: `ToniTechAlertBot`) và username cho Bot (kết thúc bằng `_bot`, ví dụ: `tonitech_alert_bot`).
4. BotFather sẽ trả về một chuỗi **HTTP API Token** có dạng: `7890123456:AAFlx...your_bot_token`.

### Bước 2: Lấy `CHAT_ID` Cá Nhân Để Nhận Thông Báo
Để Bot biết chính xác cần gửi tin nhắn cho ai:
1. Tìm bot `@userinfobot` trên Telegram và bấm **Start**.
2. Bot sẽ trả về chuỗi ID cá nhân của bạn (ví dụ `CHAT_ID = 123456789`).
3. (Nếu muốn gửi vào nhóm): Thêm Bot vừa tạo vào Group Telegram, cấp quyền Admin, sau đó lấy Chat ID của nhóm.

3. Kỹ Thuật Viết Script Cào Dữ Liệu Python Telegram Bot: BeautifulSoup4 vs Playwright

Chúng ta sẽ bóc tách 2 kỹ thuật cào dữ liệu phổ biến nhất tùy thuộc vào cấu trúc của trang web mục tiêu.

3.1. Kỹ Thuật 1: Cào Web Tĩnh Siêu Tốc Với `requests` & `BeautifulSoup4`

Áp dụng cho các trang web truyền thống (WordPress, HTML tĩnh, tin tức) nơi dữ liệu nằm sẵn trong mã nguồn HTML trả về.

Cài đặt thư viện:

bash
pip install requests beautifulsoup4 python-dotenv

Tạo file `scraper_static.py`:

scraper_static.py
python
import requests
from bs4 import BeautifulSoup

def scrape_latest_deal():
    url = "https://toniblog.net/blog/so-sanh-gia-vps-nvme/"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }

    try:
        response = requests.get(url, headers=headers, timeout=10)
        response.raise_for_status()

        # Parse HTML với BeautifulSoup
        soup = BeautifulSoup(response.text, "html.parser")
        
        # Lấy tiêu đề bài viết và thông tin deal
        title = soup.find("h1").text.strip()
        coupon_box = soup.find("blockquote")
        coupon_text = coupon_box.text.strip() if coupon_box else "Không tìm thấy mã"

        return {
            "title": title,
            "details": coupon_text,
            "url": url
        }
    except Exception as e:
        print(f"Lỗi cào dữ liệu: {e}")
        return None

if __name__ == "__main__":
    data = scrape_latest_deal()
    print("Dữ liệu cào được:", data)

3.2. Kỹ Thuật 2: Cào Web Động Render JavaScript Với `Playwright Python`

Áp dụng cho các trang web hiện đại (React, Vue, Next.js SPA) nơi dữ liệu được nạp bất đồng bộ qua JavaScript sau khi tải trang.

Cài đặt Playwright:

bash
pip install playwright
playwright install chromium

Tạo file `scraper_dynamic.py`:

scraper_dynamic.py
python
from playwright.sync_api import sync_playwright

def scrape_dynamic_price():
    url = "https://example.com/product-page"
    
    with sync_playwright() as p:
        # Khởi tạo trình duyệt Headless Chromium
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        
        # Giả lập User-Agent trình duyệt thật
        page.set_extra_http_headers({
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
        })
        
        page.goto(url, wait_until="networkidle")
        
        # Chờ phần tử chứa giá sản phẩm xuất hiện trong DOM
        page.wait_for_selector(".product-price")
        
        price = page.locator(".product-price").inner_text()
        title = page.locator("h1.product-title").inner_text()
        
        browser.close()
        
        return {
            "title": title,
            "price": price,
            "url": url
        }

if __name__ == "__main__":
    print(scrape_dynamic_price())

4. Gửi Thông Báo Tự Động Trong Cụm Cào Dữ Liệu Python Telegram Bot

Bây giờ chúng ta sẽ viết hàm gửi thông báo Telegram với định dạng HTML chuyên nghiệp (hỗ trợ in đậm, chèn đường dẫn link và mã code).

Tạo file `telegram_bot.py`:

telegram_bot.py
python
import os
import requests
from dotenv import load_dotenv

load_dotenv()

BOT_TOKEN = os.getenv("BOT_TOKEN", "7890123456:AAFlx...your_token")
CHAT_ID = os.getenv("CHAT_ID", "123456789")

def send_telegram_alert(title, details, link):
    """
    Gửi tin nhắn định dạng HTML sang Telegram Bot
    """
    api_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    
    # Soạn thảo nội dung tin nhắn dạng HTML
    message_text = (
        f"🚀 <b>THÔNG BÁO TỰ ĐỘNG TỪ PYTHON BOT</b>\n\n"
        f"📌 <b>Chủ đề:</b> {title}\n"
        f"💡 <b>Chi tiết:</b> {details}\n\n"
        f"🔗 <a href='{link}'>Click vào đây để xem chi tiết</a>\n"
        f"⏰ <i>Thời gian: Vừa cập nhật</i>"
    )
    
    payload = {
        "chat_id": CHAT_ID,
        "text": message_text,
        "parse_mode": "HTML",
        "disable_web_page_preview": False
    }
    
    try:
        response = requests.post(api_url, json=payload, timeout=10)
        res_data = response.json()
        if res_data.get("ok"):
            print("✅ Đã gửi thông báo Telegram thành công!")
        else:
            print(f"❌ Lỗi gửi Telegram: {res_data.get('description')}")
    except Exception as e:
        print(f"❌ Lỗi kết nối Telegram API: {e}")

if __name__ == "__main__":
    send_telegram_alert(
        title="Ưu đãi VPS NVMe AZDIGI Giảm 30%",
        details="Mã giảm giá TONIDEV30 đã sẵn sàng sử dụng!",
        link="https://toniblog.net/blog/so-sanh-gia-vps-nvme/"
    )

5. Lập Lịch Tự Động (Schedule / Cronjob) Cho Script Cào Dữ Liệu Python Telegram Bot

Tạo file hoàn chỉnh `main.py` tự động chạy cào dữ liệu và thông báo theo chu kỳ 15 phút một lần bằng thư viện `schedule`:

bash
pip install schedule

Nội dung file `main.py`:

main.py
python
import time
import schedule
from scraper_static import scrape_latest_deal
from telegram_bot import send_telegram_alert

# Lưu trạng thái cũ để tránh gửi tin nhắn trùng lặp
last_scraped_title = None

def job():
    global last_scraped_title
    print("🔄 Đang tiến hành cào dữ liệu...")
    
    data = scrape_latest_deal()
    if not data:
        return
        
    # Chỉ gửi tin nhắn nếu có dữ liệu mới khác lần cào trước
    if data["title"] != last_scraped_title:
        last_scraped_title = data["title"]
        send_telegram_alert(
            title=data["title"],
            details=data["details"],
            link=data["url"]
        )
    else:
        print("ℹ️ Dữ liệu không có thay đổi mới. Không gửi tin nhắn.")

# Lập lịch chạy tự động mỗi 15 phút
schedule.every(15).minutes.do(job)

if __name__ == "__main__":
    print("🤖 Python Automation Bot đang chạy ngầm...")
    # Chạy lần đầu ngay khi bật script
    job()
    
    while True:
        schedule.run_pending()
        time.sleep(1)

6. Đóng Gói Docker & Treo Ngầm Script Cào Dữ Liệu Python Telegram Bot 24/7 Trên VPS

Để script **cào dữ liệu Python Telegram Bot** hoạt động ổn định mà không bị gián đoạn khi bạn tắt máy tính cá nhân, chúng ta sẽ đóng gói dự án bằng Docker và đưa lên máy chủ VPS.

6.1. Viết File `Dockerfile` Tinh Gọn

Tạo file `Dockerfile` tại thư mục dự án:

dockerfile
dockerfile
# Sử dụng Python 3.11 Slim siêu nhẹ
FROM python:3.11-slim

WORKDIR /app

# Đặt biến môi trường Python không ghi cache file .pyc
ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "main.py"]

6.2. Viết File `docker-compose.yml` & Khởi Chạy Ngầm

Tạo file `docker-compose.yml`:

docker-compose.yml
yaml
version: '3.8'

services:
  python-telegram-scraper:
    build: .
    container_name: python_telegram_bot
    restart: always
    environment:
      - BOT_TOKEN=7890123456:AAFlx...your_token
      - CHAT_ID=123456789

Khởi chạy container chạy ngầm 24/7 trên VPS:

bash
docker compose up -d --build

Kiểm tra log hoạt động của Bot:

bash
docker logs -f python_telegram_bot

7. Bảng Checklist Rà Soát Tự Động Hóa Python Bot

STT Hạng Mục Kiểm Tra Thao Tác Thực Hiện Trạng Thái
1 Bot Token & Chat ID Đã tạo Bot qua BotFather & lấy Chat ID [x] Đã khởi tạo
2 Scraper Engine Chạy kiểm thử cào HTML / JSON thành công [x] Đã test
3 Telegram HTML Format Tin nhắn hiển thị đẹp mắt, đường dẫn click được [x] Đã format
4 Deduplication Đã xử lý lọc dữ liệu trùng lặp để không Spam Bot [x] Đã xử lý
5 Dockerization File Dockerfile build thành công image < 150MB [x] Đã đóng gói
6 VPS Daemon Container chạy ngầm với restart: always [x] Đã treo ngầm

Câu Hỏi Thường Gặp (FAQ)

Bạn sử dụng endpoint `sendPhoto` của Telegram API thay vì `sendMessage`. Truyền đường dẫn URL ảnh vào tham số `photo` hoặc upload file binary dạng `multipart/form-data`.

Tổng Kết & Tài Nguyên Mã Nguồn Mẫu

Chỉ với 15 phút thực hành bài **hướng dẫn cào dữ liệu Python Telegram Bot**, bạn đã tự xây dựng thành công một trợ lý ảo thông minh 24/7. Hệ thống tự động theo dõi biến động dữ liệu web và gửi cảnh báo tức thì về điện thoại, giúp bạn tiết kiệm hàng trăm giờ làm việc thủ công mỗi tháng.

Bình luận (0)

Anti-Spam Protected

Viết bình luận của bạn

Đánh giá:

Đang tải bình luận...

Cào Dữ Liệu Python Telegram Bot Chi Tiết Từ A-Z | toniblog.net | ToniBlog.net