Cianparser
Сбор данных с сайта объявлений Циан / The parser of general information from the site cian.ru
Install / Use
/learn @lenarsaitov/CianparserREADME
Сбор данных с сайта объявлений об аренде и продаже недвижимости Циан
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®ion=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
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
85.3kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
342.5kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
