SkillAgentSearch skills...

Cianparser

Сбор данных с сайта объявлений Циан / The parser of general information from the site cian.ru

Install / Use

/learn @lenarsaitov/Cianparser

README

Сбор данных с сайта объявлений об аренде и продаже недвижимости Циан

Cianparser - это библиотека Python 3 (версии 3.8 и выше) для парсинга сайта Циан. С его помощью можно получить достаточно подробные и структурированные данные по краткосрочной и долгосрочной аренде, продаже квартир, домов, танхаусов итд.

Установка

pip install cianparser

Использование

import cianparser

moscow_parser = cianparser.CianParser(location="Москва")
data = moscow_parser.get_flats(deal_type="sale", rooms=(1, 2), with_saving_csv=True, additional_settings={"start_page":1, "end_page":2})

print(data[0])
                              Preparing to collect information from pages..
The absolute path to the file: 
 /Users/macbook/some_project/cianparser/cian_flat_sale_1_2_moskva_12_Jan_2024_21_48_43_100892.csv 

The page from which the collection of information begins: 
 https://cian.ru/cat.php?engine_version=2&p=1&with_neighbors=0&region=1&deal_type=sale&offer_type=flat&room1=1&room2=1

Collecting information from pages with list of offers
 1 | 1 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 28. Progress ratio: 50 %. Average price: 45 547 801 rub
 2 | 2 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 56. Progress ratio: 100 %. Average price: 54 040 102 rub

The collection of information from the pages with list of offers is completed
Total number of parsed offers: 56.
{
    "author": "MR Group",
    "author_type": "developer",
    "url": "https://www.cian.ru/sale/flat/292125772/",
    "location": "Москва",
    "deal_type": "sale",
    "accommodation_type": "flat",
    "floor": 20,
    "floors_count": 37,
    "rooms_count": 1,
    "total_meters": 39.6,
    "price": 28623910,
    "district": "Беговой",
    "street": "Ленинградский проспект",
    "house_number": "вл8",
    "underground": "Белорусская",
    "residential_complex": "Slava"
}

Инициализация

Параметры, используемые при инициализации парсера через функциою CianParser:

  • location - локация объявления, к примеру, Москва (для просмотра доступных мест используйте cianparser.list_locations())
  • proxies - прокси (см раздел Cloudflare, CloudScraper, Proxy), по умолчанию None

Метод get_flats

Данный метод принимает следующий аргументы:

  • deal_type - тип объявления, к примеру, долгосрочная аренда, продажа ("rent_long", "sale")
  • rooms - количество комнат, к примеру, 1, (1,3, "studio"), "studio, "all"; по умолчанию любое ("all")
  • with_saving_csv - необходимо ли сохранение собираемых данных (в реальном времени в процессе сбора данных) или нет, по умолчанию False
  • with_extra_data - необходимо ли сбор дополнительных данных, но с кратным продолжительности по времени (см. ниже в Примечании), по умолчанию False
  • additional_settings - дополнительные настройки поиска (см. ниже в Дополнительные настройки поиска), по умолчанию None

Пример:

import cianparser

moscow_parser = cianparser.CianParser(location="Москва")
data = moscow_parser.get_flats(deal_type="rent_long", rooms=(1, 2), additional_settings={"start_page":1, "end_page":1})

В проекте предусмотрен функционал корректного завершения в случае окончания страниц. По данному моменту, следует изучить раздел Ограничения

Метод get_suburban (сбор объявлений домов/участков/танхаусав итп)

Данный метод принимает следующий аргументы:

  • suburban_type - тип здания, к примеру, дом/дача, часть дома, участок, танхаус ("house", "house-part", "land-plot", "townhouse")
  • deal_type - тип объявления, к примеру, долгосрочная аренда, продажа ("rent_long", "sale")
  • with_saving_csv - необходимо ли сохранение собираемых данных (в реальном времени в процессе сбора данных) или нет, по умолчанию False
  • with_extra_data - необходимо ли сбор дополнительных данных, но с кратным продолжительности по времени, по умолчанию False
  • additional_settings - дополнительные настройки поиска (см. ниже в Дополнительные настройки поиска), по умолчанию None

Пример:

import cianparser

moscow_parser = cianparser.CianParser(location="Москва")
data = moscow_parser.get_suburban(suburban_type="townhouse", deal_type="sale", additional_settings={"start_page":1, "end_page":1})

Метод get_newobjects (сбор даннных по новостройкам)

Данный метод принимает следующий аргументы:

  • with_saving_csv - необходимо ли сохранение собираемых данных (в реальном времени в процессе сбора данных) или нет, по умолчанию False

Пример:

import cianparser

moscow_parser = cianparser.CianParser(location="Москва")
data = moscow_parser.get_newobjects()

Дополнительные настройки поиска

Пример:

additional_settings = {
    "start_page":1,
    "end_page": 10,
    "is_by_homeowner": True,
    "min_price": 1000000,
    "max_price": 10000000,
    "min_balconies": 1,
    "have_loggia": True,
    "min_house_year": 1990,
    "max_house_year": 2023,
    "min_floor": 3,
    "max_floor": 4,
    "min_total_floor": 5,
    "max_total_floor": 10,
    "house_material_type": 1,
    "metro": "Московский",
    "metro_station": "ВДНХ",
    "metro_foot_minute": 45,
    "flat_share": 2,
    "only_flat": True,
    "only_apartment": True,
    "sort_by": "price_from_min_to_max",
}
  • object_type - тип жилья ("new" - вторичка, "secondary" - новостройка)
  • start_page - страница, с которого начинается сбор данных
  • end_page - страница, с которого заканчивается сбор данных
  • is_by_homeowner - объявления, созданных только собственниками
  • min_price - цена от (в рублях)
  • max_price - цена до (в рублях)
  • min_balconies - минимальное количество балконов
  • have_loggia - наличие лоджи
  • min_house_year - год постройки дома от
  • max_house_year - год постройки дома до
  • min_floor - этаж от
  • max_floor - этаж до
  • min_total_floor - этажей в доме от
  • max_total_floor - этажей в доме до
  • house_material_type - тип дома (см ниже возможные значения)
  • metro - название метрополитена (см ниже возможные значения)
  • metro_station - станция метро (доступно при заданом metro)
  • metro_foot_minute - сколько минут до метро пешком
  • flat_share - с долями или без (1 - только доли, 2 - без долей)
  • only_flat - без апартаментов
  • only_apartment - только апартаменты
  • sort_by - сортировка объявлений (см ниже возможные значения)

Возможные значения поля house_material_type

  • 1 - киричный
  • 2 - монолитный
  • 3 - панельный
  • 4 - блочный
  • 5 - деревянный
  • 6 - сталинский
  • 7 - щитовой
  • 8 - кирпично-монолитный

Возможные значения полей metro и metro_station

Соответствуют ключам и значениям словаря, получаемого вызовом функции cianparser.list_metro_stations()

Возможные значения поля sort_by

  • "price_from_min_to_max" - сортировка по цене (сначала дешевле)
  • "price_from_max_to_min" - сортировка по цене (сначала дороже)
  • "total_meters_from_max_to_min" - сортировка по общей площади (сначала больше)
  • "creation_data_from_newer_to_older" - сортировка по дате добавления (сначала новые)
  • "creation_data_from_older_to_newer" - сортировка по дате добавления (сначала старые)

Признаки, получаемые в ходе сбора данных с предложений по долгосрочной аренде недвижимости

  • district - район
  • underground - метро
  • street - улица
  • house_number - номер дома
  • floor - этаж
  • floors_count - общее количество этажей
  • total_meters - общая площадь
  • living_meters - жилая площади
  • kitchen_meters - площадь кухни
  • rooms_count - количество комнат
  • year_construction - год постройки здания
  • house_material_type - тип дома (киричный/монолитный/панельный итд)
  • heating_type - тип отопления
  • price_per_month - стоимость в месяц
  • commissions - комиссия, взымаемая при заселении
  • author - автор объявления
  • author_type - тип автора
  • phone - номер телефона в объявлении
  • url - ссылка на объявление

Возможные значения поля author_type:

  • real_estate_agent - агентство недвижимости
  • homeowner - собственник
  • realtor - риелтор
  • official_representative - ук оф.представитель
  • representative_developer - представитель застройщика
  • developer - застройщик
  • unknown - без указанного типа

Признаки, получаемые в ходе сбора данных с предложений по продаже недвижимости

Признаки аналогичны вышеописанным, кроме отсутствия полей price_per_month и commissions.

При этом появляются новые:

  • price - стоимость недвижимости
  • residential_complex - название жилого комплекса
  • object_type - тип жилья (вторичка/новостройка)
  • finish_type - отделка

Признаки, получаемые в ходе сбора данных по новостройкам

  • name - наименование ЖК
  • url - ссылка на страницу
  • full_location_address - полный адрес расположения ЖК
  • year_of_construction - год сдачи
  • house_material_type - тип дома (см выше возможные значения)
  • finish_type - отделка
  • ceiling_height - высота потолка
  • class - класс жилья
  • parking_type - тип парковки
  • floors_from - этажность (от)
  • floors_to - этажность (до)
  • builder - застройщик

Сохранение данных

Имеется возможность сохранения собираемых данных в режиме реального времени. Для этого необходимо подставить в аргументе with_saving_csv значение True.

Пример получаемого файла при вызове метода get_flats с with_extra_data = True:

cian_flat_sale_1_1_moskva_12_Jan_2024_22_29_48_117413.csv

| author | author_type | url | location | deal_type | accommodation_type | floor | floors_count | rooms_count | total_meters | price_per_m2 | price | year_of_construction | object_type | house_material_type | heating_type | finish_type | living_meters | kitchen_meters | phone | district | street

Related Skills

View on GitHub
GitHub Stars183
CategoryDevelopment
Updated3d ago
Forks62

Languages

Python

Security Score

100/100

Audited on Mar 28, 2026

No findings