Как автоматизировать поиск видеокарт 3080 и 3070 в условиях майнеров: Python‑скрипт за час

Проблема: нехватка видеокарт из‑за майнеров

После продажи старой видеокарты я захотел обновиться. При попытке купить новую карту в любимом магазине я столкнулся с тем, что даже обычные модели, как 3070 и 3090, быстро распродаются. Особенно 3080, которую я хотел, распродается «как горячие пирожки» из‑за майнеров. Появление новых товаров происходит поштучно и на короткий срок, поэтому ручной мониторинг сайта неэффективен.

Решение: автоматический скрапинг на Python

Я решил автоматизировать поиск нужных карт, не используя 1С, а выбрав Python – язык, который быстро освоить и легко интегрировать с внешними сервисами. За час я разобрался со скрапингом и написал скрипт, который:

  • Раз в 60 секунд делает запрос к странице с каталогом видеокарт.
  • Парсит список товаров и ищет модели 3070 и 3080.
  • Если находит подходящий товар, сохраняет его данные (название, цена, ссылка) в базу данных.
  • Отправляет уведомление в Telegram через бота с краткой информацией и ссылкой на товар.

Как это работает

Скрипт использует стандартные библиотеки Python: requests для HTTP‑запросов, BeautifulSoup для парсинга HTML и sqlite3 (или любой другой легковесный СУБД) для хранения найденных записей. Telegram‑бот реализован через python-telegram-bot, который отправляет сообщение, когда скрипт обнаруживает новую доступную видеокарту.

Пример логики скрипта

import requests
from bs4 import BeautifulSoup
import sqlite3
import time
import telegram

BOT_TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
URL = 'https://example.com/gpus'

conn = sqlite3.connect('gpus.db')
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS cards (id INTEGER PRIMARY KEY, name TEXT, price TEXT, link TEXT, seen INTEGER)''')

bot = telegram.Bot(token=BOT_TOKEN)

while True:
    r = requests.get(URL)
    soup = BeautifulSoup(r.text, 'html.parser')
    cards = soup.select('.product-card')
    for card in cards:
        name = card.select_one('.name').text.strip()
        if name in ('RTX 3070', 'RTX 3080'):
            price = card.select_one('.price').text.strip()
            link = card.select_one('a')['href']
            cur.execute('INSERT OR IGNORE INTO cards (name, price, link, seen) VALUES (?, ?, ?, 0)', (name, price, link))
            conn.commit()
            bot.send_message(chat_id=CHAT_ID, text=f"{name} доступна: {price}\n{link}")
    time.sleep(60)

Код выше – упрощённый пример. В реальном проекте стоит добавить обработку ошибок, логирование и более гибкую фильтрацию товаров.

Планы на будущее

В ближайшее время я планирую «причешить» скрипт, добавить более продвинутые функции: хранение истории цен, уведомления по email, интеграцию с другими площадками. Также подготовлю короткое видео‑обзор, которое опубликую на своём канале.

Вывод

Автоматический скрапинг на Python позволяет быстро реагировать на появление нужных видеокарт даже в условиях высокой конкуренции со стороны майнеров. Такой подход экономит время и повышает шансы на покупку желаемой модели.

Скриншот скрипта