Парсер каталога курсовРазработка и доработка

Парсер на Python для каталога онлайн-курсов: название, школа, цена, длительность и формат в таблице

Обычно готово за 15 минутДоработки включеныКонтроль качества
Пакеты
Защита оплатыПодробнее
  • Доработки в рамках пакета бесплатны.
  • Если вы не ответите в течение 3 дней после сдачи, работа будет принята автоматически.

При оплате деньги резервируются и переходят сервису, только когда вы примете работу.

Парсер на Python для каталога онлайн-курсов: название, школа, цена, длительность и формат в таблице

Пример результата

Пример по пакету «Стандарт»

Парсер каталога поставщика садового инструмента в Excel

Как выглядит результат

АртикулНазваниеЦенаВ наличииВесФото
GT-1042Секатор, 20 мм18,90Да0,24 кг…/gt-1042.jpg
GT-1187Складная пила, 210 мм24,50Да0,31 кг…/gt-1187.jpg
GT-2210Ножницы для кустов, волнистое лезвие39,00Нет1,10 кг…/gt-2210.jpg
GT-3305Совок, нержавеющая сталь9,80Да0,18 кг…/gt-3305.jpg
GT-4120Садовый шланг 25 м, 1/2"42,00Да2,90 кг…/gt-4120.jpg

В файле из примера 1236 товаров с 52 страниц списка.

Фрагмент кода

def product_links(list_url: str) -> Iterator[str]:
    """Ссылки на карточки со всех страниц списка, по кнопке «Дальше»."""
    url: str | None = list_url
    while url:
        page = fetch(url)
        for card in page.select("div.product-card a.title"):
            yield urljoin(url, card["href"])
        next_link = page.select_one("a.pagination-next")
        url = urljoin(url, next_link["href"]) if next_link else None


def fetch(url: str) -> BeautifulSoup:
    """Одна открытая страница, без спешки: пауза между запросами и несколько попыток при ошибке."""
    for attempt in range(3):
        time.sleep(settings.delay_seconds)
        response = session.get(url, timeout=30)
        if response.status_code == 200:
            return BeautifulSoup(response.text, "html.parser")
        log.warning("%s ответил %s, попытка %d из 3", url, response.status_code, attempt + 1)
    raise ScraperError(f"{url} не открылся за 3 попытки")

Файлы: ZIP-архив с scraper.py, settings.ini (стартовая страница, пауза между запросами, имя файла), requirements.txt и README: как установить и запустить. Парсер читает только открытые страницы, одну раз в 2 секунды, и сначала проверяет robots.txt сайта. Клиент запускает его на своём компьютере.

Клиент: интернет-магазин товаров для сада, который перепродаёт инструмент поставщика. У поставщика открытый каталог на сайте, но нет прайс-листа файлом. Задача: пройти по страницам списка, открыть каждую карточку товара и сохранить в Excel артикул, название, цену, наличие, вес и ссылку на главное фото, чтобы раз в неделю сравнивать цены.

Клиент и все данные вымышлены.

Об услуге

Онлайн-школы, агрегаторы курсов и те, кто выбирает обучение, переносят открытый каталог курсов в таблицу: название, школа, тема, уровень, формат, длительность, дата старта, цена и старая цена, число уроков, рейтинг так, как он показан, и ссылка. Пришлите страницу каталога, одну страницу курса и одну-две страницы, сохранённые из браузера. Вы получите код на Python, файл настроек и README и запустите его на своём компьютере. Он копирует то, что написано на страницах, и не оценивает качество курсов и не обещает результатов обучения. Имена преподавателей и отзывы учеников не собираются, поэтому личных данных в таблице нет. Парсер читает открытые страницы в спокойном темпе, не входит в аккаунты и не обходит капчи и защиту. Разрешают ли это правила сайта, решаете вы; после смены вёрстки нужна доработка.

Что входит

  • Что вы получитеАрхив ZIP с кодом на Python, файлом настроек и README с пошаговой инструкцией; код также виден на странице заказа.
  • Цены для сравненияЦена, старая цена и рассрочка отдельными столбцами
  • Длительность и форматНедели или часы, вживую или в записи, как на странице
  • Тема и уровеньВ отдельных столбцах для фильтров
  • Спокойный темпПауза между страницами, задаётся в настройках
  • Работает на вашем компьютереWindows, macOS или Linux, с Python

Порядок работы

  1. 1
    КаталогВы даёте каталог и одну сохранённую страницу курса
  2. 2
    ПарсерМы пишем код и инструкцию по запуску
  3. 3
    ЗапускВы запускаете его и сверяете несколько курсов с сайтом
  4. 4
    ПравкиВы просите правки в рамках пакета и присылаете текст ошибки, если она есть

Что нужно от вас

Сайт и конкретные страницы: ссылка на каталог курсов и на одну страницу курса и примерно сколько всего курсов. Поля в порядке вашей таблицы, например название, школа, тема, уровень, формат, длительность, дата старта, цена, старая цена, ссылка. Одна-две такие страницы, сохранённые из браузера («Файл» > «Сохранить страницу как»), или скриншоты. CSV или Excel.

В брифе мы спросим:

  • Какой сайт и какие страницы?
  • Нужные поля
  • Сколько примерно курсов?
  • Только часть курсов?

Сравнение пакетов

ПакетыЭкономКурсы по вашим ссылкам21 $СтандартВесь каталог42 $БизнесДо 3 школ75 $
Срок1 день2 дня3 дня
Доработки123
Сайтов11до 3
Типов страниц12 (каталог и страница курса)до 3
Полейдо 10до 25до 25 на каждом
Проход по страницам спискаНетДаДа
Файл результатовCSVExcel или CSVExcel, CSV или JSON
Без дублей, продолжение с места остановкиНетНетДа
Заказать ЭкономЗаказать СтандартЗаказать Бизнес

Защита оплаты

Вы оплачиваете заказ сразу, но деньги переходят сервису только за принятую работу.

  • Фиксированная ценаЦена пакета не меняется после оплаты.
  • Деньги резервируютсяПри оплате сумма только резервируется. Сервису она переходит, когда вы примете работу.
  • Проверка перед сдачейКаждый результат проходит проверку качества, прежде чем попасть к вам, и вы видите его на странице заказа до приёмки.
  • Бесплатные доработкиПросите изменения в рамках брифа столько раз, сколько предусмотрено пакетом.
  • Приёмка через 3 дняЕсли в течение 3 дней после сдачи вы не примете работу и не попросите изменений, она будет принята автоматически. Если после сдачи вы напишете в чат заказа, заказ подождёт; ответив, мы можем начать отсчёт 3 дней заново и сообщим об этом в чате.
  • Переделка или полный возвратЕсли результат не соответствует брифу и доработки не помогли или срок превышен больше чем вдвое, напишите в чат заказа: мы переделаем работу или полностью вернём деньги.
Как это работает →

Вопросы и ответы

Может ли он открывать уроки внутри курса?

Нет. Уроки находятся за входом ученика, а парсер никогда не входит в аккаунты. Он читает только открытый каталог и страницы курсов.

Можно собрать имена преподавателей или отзывы учеников?

Нет. Имена людей — личные данные, поэтому их в таблице нет. Число рейтинга, если страница его показывает, может быть столбцом.

Что, если цены видны только после выбора тарифа или регистрации?

Цена за регистрацией парсеру недоступна. Если тарифы открываются по клику на вкладку, парсер прочитает их с помощью браузерной библиотеки (Playwright).

Можно ли собирать каталог курсов?

Правила сайтов и законы о данных отличаются, поэтому решение, можно ли собирать и использовать данные, за вами. Google, Amazon, LinkedIn и соцсети исключены в любом случае.

Не нашли ответ?

Пакеты