Парсер эпизодов подкастаРазработка и доработка

Парсер на 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 артикул, название, цену, наличие, вес и ссылку на главное фото, чтобы раз в неделю сравнивать цены.

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

Об услуге

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

Что входит

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

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

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

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

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

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

  • Какой подкаст?
  • Нужные поля
  • Сколько примерно эпизодов?
  • Файл результатов

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

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

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

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

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

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

Может ли он скачивать аудиофайлы?

Нет. Эпизоды принадлежат их авторам, поэтому парсер сохраняет ссылки на аудио, а не сами файлы.

Может ли он читать RSS-ленту вместо страниц?

Да, если лента открыта по публичному адресу. Она считается одним типом страниц и часто даёт даты и длительность аккуратнее, чем сайт.

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

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

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

Нет. Он собирает то, что уже написано на страницах; он не слушает эпизоды и не пишет тексты. Если сайт потом поменяет вёрстку, парсер нужно доработать.

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

Пакеты