This is a clean, developer-friendly template for parsing Avito listings using Python and Playwright. It was extracted from a larger project to serve as a starting point for building custom Avito scrapers.
- Asynchronous: Built with
asyncioandplaywrightfor high performance. - Persistent Browser: Reuses the browser instance for multiple requests to save resources.
- Stealth: Uses realistic user-agents and human-like delays to avoid detection.
- Two-stage Parsing:
search(): Rapidly scans search results and gathers basic item info.fetch_details(): Deep-dives into individual item pages to extract descriptions, parameters, and seller details.
- Install dependencies:
pip install -r requirements.txt
- Install Playwright browser (Chromium):
playwright install chromium
import asyncio
from avito_parser import AvitoParser, resolve_city_slug
async def main():
parser = AvitoParser(headless=True)
try:
items = await parser.search("iphone 15", resolve_city_slug("москва"))
if items:
item = items[0]
await parser.fetch_details(item)
print(f"Title: {item.title}, Price: {item.price}")
finally:
await parser.stop()
if __name__ == "__main__":
asyncio.run(main())Чистый и удобный шаблон для парсинга объявлений Авито на Python с использованием Playwright. Подходит как основа для создания собственных парсеров, мониторинг-ботов или систем анализа цен.
- Асинхронность: Построен на
asyncioиplaywrightдля максимальной производительности. - Персистентный браузер: Один экземпляр браузера переиспользуется для всех запросов, что экономит память.
- Стелс-технологии: Реалистичные User-Agent и имитация задержек человека для обхода блокировок.
- Двухэтапный парсинг:
search(): Быстрый сбор карточек из результатов поиска.fetch_details(): Заход внутрь каждого объявления для сбора полного описания, характеристик и данных продавца.
- Установите зависимости:
pip install -r requirements.txt
- Установите браузер Playwright (Chromium):
playwright install chromium
import asyncio
from avito_parser import AvitoParser, resolve_city_slug
async def main():
parser = AvitoParser(headless=True)
try:
# Поиск по ключевому слову и городу
items = await parser.search("iphone 15", resolve_city_slug("москва"))
if items:
item = items[0]
# Получение детальной информации (описание, продавец)
await parser.fetch_details(item)
print(f"Название: {item.title}, Цена: {item.price}")
finally:
await parser.stop()
if __name__ == "__main__":
asyncio.run(main())avito_parser/core.py: Основная логика парсинга.avito_parser/models.py: Модели данных (AvitoItem).avito_parser/utils.py: Вспомогательные функции (обработка цен, маппинг городов).main.py: Полноценный пример использования.
Данный проект создан исключительно в образовательных целях. Пожалуйста, соблюдайте Условия использования Авито и политику robots.txt. Используйте ответственно.