Коротко: чтобы собрать скрапер Avito с помощью ChatGPT, попросите модель написать скрипт на Python с requests, BeautifulSoup и Selenium, а затем добавьте User-Agent, задержки и выгрузку в CSV. Минимальный каркас:

import requests from bs4 import BeautifulSoup headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"} url = "https://www.avito.ru/moskva/telefony?q=iphone" html = requests.get(url, headers=headers, timeout=15).text soup = BeautifulSoup(html, "html.parser") cards = soup.select('[data-marker="item"]') print(len(cards), "объявлений найдено")

Дальше из каждой карточки достаём заголовок, цену и ссылку, проходим по страницам пагинации и сохраняем результат в таблицу. Ниже — полный разбор с промптами для ChatGPT, обходом базовых блокировок и правовыми нюансами.

Что нужно знать перед сборкой скрапера Avito

  • Avito — динамический сайт на React: часть данных подгружается JavaScript, поэтому «голый» requests нередко возвращает пустую разметку. Для полноценного сбора нужен Selenium или Playwright.
  • ChatGPT пишет за вас код и селекторы, но не знает текущую разметку Avito — её нужно проверять самому в DevTools браузера.
  • Цепляйтесь за атрибуты data-marker, а не за CSS-классы: классы Avito меняет часто, data-marker стабильнее.
  • Массовый парсинг чужих объявлений нарушает пользовательское соглашение Avito, а сбор персональных данных подпадает под ФЗ-152. Официальный API Avito рассчитан на продавцов и управление своими объявлениями, а не на сбор чужих.
  • Сохранять данные удобнее всего в CSV или Excel через pandas.
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК нейросети DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросети DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
  • Где и как применять? Потестируем модель после установки на разных задачах
  • Как дообучить модель под себя?

Какие данные можно собрать с объявления Avito

Из карточки объявления доступны заголовок, цена, ссылка на объявление, город и район, дата публикации, имя продавца и его рейтинг, а внутри самого объявления — описание, характеристики и фотографии. Для большинства учебных и аналитических задач хватает трёх полей: заголовок, цена, ссылка. Именно их мы и разберём в коде. Телефоны и контакты продавцов — это персональные данные, и их сбор мы намеренно оставляем за скобками: см. правовой раздел ниже.

Зачем вообще подключать ChatGPT к парсингу Avito

ChatGPT — языковая модель OpenAI, которая уверенно генерирует код на Python. Для скрапера это экономит время на рутине: модель предложит структуру скрипта, напишет функции разбора карточки, подскажет, как обойти типичную ошибку. Но ChatGPT работает вслепую — он не видит актуальную HTML-разметку Avito. Поэтому рабочая схема такая: вы открываете страницу Avito, смотрите разметку в DevTools, отдаёте ChatGPT конкретные селекторы, а он собирает из них готовый код. Модель — ускоритель, а не замена вашей проверки.

Почему старый подход «requests + BeautifulSoup» ломается на Avito

В большинстве вводных статей показывают код, который отправляет requests.get() на avito.ru и парсит ответ через BeautifulSoup. На простых сайтах это работает. На Avito — частично: карточки объявлений отрисовываются JavaScript уже в браузере, а сервер отдаёт лишь каркас страницы. В ответе requests нужных данных может просто не оказаться. Это первая причина, по которой новички получают пустой список и не понимают, что не так.

Решений два. Первое — забирать HTML через реальный браузер с помощью Selenium, который дожидается прогрузки контента. Второе — цепляться за стабильные атрибуты data-marker, которые Avito использует для разметки карточек. Разбирать полученный HTML удобно через BeautifulSoup — её методы select() и get_text() работают по привычным CSS-селекторам. Оба приёма легко описать ChatGPT в промпте.

Готовые промпты для ChatGPT под скрапер Avito

Качество кода напрямую зависит от формулировки. Общие запросы вроде «напиши парсер Avito» дают шаблонный и часто нерабочий результат. Давайте контекст, библиотеки и точные селекторы.

Промпт 1. Каркас скрипта

«Напиши скрипт на Python, который через Selenium открывает страницу выдачи Avito по URL, дожидается загрузки карточек с атрибутом data-marker=»item» и возвращает объект BeautifulSoup. Добавь заголовок User-Agent и таймаут».

Промпт 2. Разбор карточки

«Вот HTML одной карточки объявления Avito: [вставьте фрагмент из DevTools]. Напиши функцию parse_card(card), которая возвращает словарь с полями title, price, url. Цену приведи к числу, ссылку сделай абсолютной».

Промпт 3. Пагинация и сохранение

«Дополни скрипт: перебор страниц через параметр &p=, задержка time.sleep 4–8 секунд между запросами, сбор всех объявлений в список словарей и выгрузка в CSV через pandas с кодировкой utf-8-sig для корректного открытия в Excel».

Отдавайте фрагмент реальной разметки — тогда ChatGPT подставит верные селекторы вместо выдуманных.

Структура кода: из каких частей состоит скрапер

Как собрать скрапер Avito с помощью ChatGPT за 5 шагов
Как собрать скрапер Avito с помощью ChatGPT за 5 шагов

Рабочий скрапер Avito обычно делится на четыре функции: получение страницы, разбор одной карточки, обход пагинации, сохранение. Такое деление ChatGPT понимает с полуслова и не путается в длинном скрипте.

import time import pandas as pd from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options def get_soup(url): options = Options() options.add_argument("--headless=new") options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64)") driver = webdriver.Chrome(options=options) driver.get(url) time.sleep(5) # ждём прогрузку JS html = driver.page_source driver.quit() return BeautifulSoup(html, "html.parser")

Разбор объявления: заголовок, цена, ссылка

def parse_card(card): title_el = card.select_one('[data-marker="item-title"]') price_el = card.select_one('[data-marker="item-price"]') title = title_el.get_text(strip=True) if title_el else None href = title_el.get("href") if title_el else None url = f"https://www.avito.ru{href}" if href else None price = price_el.get_text(strip=True) if price_el else None return {"title": title, "price": price, "url": url}

Названия атрибутов вроде item-title и item-price — ориентир, а не константа: перед запуском откройте карточку в DevTools и сверьте фактические data-marker. Мы проверяли: разметка Avito периодически меняется, и захардкоженный селектор в какой-то момент перестаёт находить элементы.

Пагинация: сбор нескольких страниц

def scrape_avito(base_url, pages=3): results = [] for page in range(1, pages + 1): url = f"{base_url}&p={page}" soup = get_soup(url) cards = soup.select('[data-marker="item"]') for card in cards: results.append(parse_card(card)) time.sleep(6) # пауза между страницами return results

Сохранение в CSV и Excel

data = scrape_avito("https://www.avito.ru/moskva/telefony?q=iphone", pages=3) df = pd.DataFrame(data) df.to_csv("avito.csv", index=False, encoding="utf-8-sig") # utf-8-sig — чтобы Excel не ломал кириллицу df.to_excel("avito.xlsx", index=False)

Кодировка utf-8-sig избавляет от «кракозябр» при открытии CSV в Excel — частая боль новичков.

Как обойти базовые блокировки

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

  • User-Agent. Подставляйте заголовок реального браузера — запрос без него выглядит как бот.
  • Задержки. time.sleep(4–8) между действиями и длинная пауза каждые 20–30 объявлений имитируют поведение человека.
  • Сессия и cookies. Сохраняйте cookies в рамках одной сессии — резкие «холодные» запросы подозрительны.
  • Прокси. При больших объёмах один IP быстро упирается в лимит; для серьёзного парсинга используют пул прокси. Это уже за рамками вводного скрипта.

Мини-вывод: заголовки и задержки — обязательный минимум; всё, что сложнее, — это уже гонка с антиботом, в которой Avito на своей стороне.

Типичные ошибки новичков

  • Парсинг через голый requests. Возвращает пустоту из-за JS-рендеринга. Лечится Selenium или Playwright.
  • Селекторы по CSS-классам. Классы Avito меняет часто — скрипт ломается через неделю. Используйте data-marker.
  • Нет задержек. Десятки запросов подряд — быстрый бан по IP и капча.
  • Слепая вера в код ChatGPT. Модель выдаёт правдоподобные, но выдуманные селекторы. Всегда сверяйте с реальной разметкой.
  • Кодировка при экспорте. Без utf-8-sig кириллица в Excel превращается в мусор.

Правовые и этические нюансы

Перед запуском стоит трезво оценить границы. Скрапинг Avito — это не «серая зона по умолчанию», а вполне конкретные риски.

  • robots.txt и пользовательское соглашение. Автоматический массовый сбор данных противоречит правилам площадки.
  • Персональные данные. Имена, телефоны и контакты продавцов — персональные данные; их сбор и обработка регулируются ФЗ-152. Для коммерческого использования это прямой риск.
  • Официальный путь. Если вы продавец, у Avito есть официальный API и автозагрузка для работы со своими объявлениями — легальная альтернатива парсингу чужих.

Учебный проект «для себя» и промышленный сбор чужих контактов на продажу — юридически разные истории. Держите это в голове. Если цель — цены и ассортимент для анализа рынка, обходитесь агрегированными данными без персональной информации: так вы снижаете и правовой риск, и нагрузку на площадку.

Чек-лист: собрать скрапер Avito по шагам

  • Открыть выдачу Avito в браузере, найти в DevTools атрибуты data-marker для карточки, заголовка и цены.
  • Отдать ChatGPT реальный фрагмент HTML и получить каркас на Selenium + BeautifulSoup.
  • Написать parse_card(): заголовок, цена, ссылка; цену привести к числу.
  • Добавить пагинацию через &p=, User-Agent и задержки time.sleep.
  • Сохранить результат в CSV (utf-8-sig) или Excel через pandas.
  • Сверить код с реальной страницей и проверить правовые границы сбора.

FAQ

Можно ли спарсить Avito только на requests и BeautifulSoup?

Частично. Из-за JavaScript-рендеринга часть данных не попадает в ответ requests. Для стабильного результата подключают Selenium или Playwright, которые дожидаются прогрузки страницы.

Напишет ли ChatGPT рабочий парсер Avito сам?

Каркас — да, но не готовое решение «под ключ». ChatGPT не видит актуальную разметку Avito и подставляет предполагаемые селекторы. Вы даёте ему реальный фрагмент HTML из DevTools — тогда код становится рабочим.

Как сохранить результат в Excel без «кракозябр»?

Сохраняйте CSV с кодировкой utf-8-sig либо экспортируйте сразу в .xlsx через pandas.to_excel() — тогда кириллица открывается корректно.

За что можно получить бан при парсинге?

За частые запросы без задержек, отсутствие User-Agent и работу с одного IP. Avito отвечает капчей и блокировкой адреса. Помогают паузы, заголовки реального браузера и, при объёмах, прокси.

Легально ли парсить Avito?

Массовый сбор чужих объявлений нарушает пользовательское соглашение, а сбор персональных данных подпадает под ФЗ-152. Для работы со своими объявлениями используйте официальный API Avito.

Итог

ChatGPT ускоряет сборку скрапера Avito, но не отменяет вашу работу: проверить разметку, подставить актуальные data-marker, добавить заголовки и задержки, сохранить данные в CSV или Excel и не забыть про правовые границы. Собирайте по частям — каркас, разбор карточки, пагинация, сохранение — и на каждом шаге сверяйте код с реальной страницей.

Большой практикум
ЗАМЕНИ ВСЕ НЕЙРОСЕТИ НА ОДНУ — PERPLEXITY
ПОКАЖЕМ НА КОНКРЕТНЫХ КЕЙСАХ
  • Освой нейросеть Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
  • УЧАСТВОВАТЬ ЗА 0 РУБ.
  • Расскажем, как получить подписку
Участвовать бесплатно
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК нейросети DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросеть DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
Участвовать бесплатно