Парсер сайтаРазработка и доработка

Парсер сайта на Python: собирает открытые данные со страниц в CSV или Excel — цены, каталоги, объявления

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

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

Парсер сайта на Python: собирает открытые данные со страниц в CSV или Excel — цены, каталоги, объявления

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

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

Парсер каталога поставщика садового инструмента в 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 по настоящей структуре этих страниц, и он сохранит результаты в CSV, Excel или JSON. Вы получаете архив с кодом, файлом настроек с адресами и паузой между страницами и README, где объяснено, как установить Python и запустить парсер. Запускаете его вы, на своём компьютере, поэтому данные сразу попадают к вам; мы их за вас не собираем и не храним. Парсер читает только открытые страницы, в спокойном темпе, и никогда не входит в аккаунты, не обходит капчи и другую защиту и не собирает личные данные, например имена, почту или телефоны людей. Если сайт поменяет вёрстку, парсер может потребовать доработки. Можно ли собирать и использовать данные сайта по его правилам, решаете и отвечаете за это вы.

Что входит

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

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

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

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

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

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

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

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

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

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

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

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

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

Законно ли парсить сайт?

Сбор открытых данных во многих случаях разрешён, но правила сайтов и законы о данных в разных странах отличаются, поэтому решение, можно ли собирать и использовать данные, за вами. Парсер никогда не входит в аккаунты, не обходит защиту и не собирает личные данные — это держит его в безопасных рамках.

Вы соберёте данные за меня?

Нет. Вы получаете парсер и запускаете его сами, поэтому результаты сразу попадают к вам, и вы можете запускать его снова, когда нужны свежие данные.

Что, если сайт изменится или заблокирует парсер?

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

Можно парсить Amazon, Google или соцсети?

Нет. Их правила запрещают так собирать данные, многие их страницы требуют входа, и в них есть личные данные людей. Для таких данных используйте официальный API или выгрузку сервиса.

Нужно ли уметь программировать?

Нет. В README сказано, как один раз установить Python, одной командой поставить то, что нужно парсеру, и запустить его. Для страниц, которые строят содержимое на JavaScript, парсер использует браузерную библиотеку (Playwright), и README это тоже описывает.

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

Пакеты