Parser information from Cian website
Project description
Сбор данных с сайта объявлений об аренде и продаже недвижимости Циан
Cianparser - это библиотека Python 3 (версии 3.8 и выше) для парсинга сайта Циан. С его помощью можно получить достаточно подробные и структурированные данные по краткосрочной и долгосрочной аренде, продаже квартир, домов, танхаусов итд.
Установка
pip install cianparser
Использование
import cianparser
data = cianparser.parse(
deal_type="rent_long",
accommodation_type="flat",
location="Москва",
rooms=(2, 3),
start_page=1,
end_page=2,
is_saving_csv=True,
is_latin=False,
is_express_mode=True,
is_by_homeowner=False,
)
print(data[0])
Preparing to collect information from pages..
The absolute path to the file:
/Users/macbook/some_project/cian_parsing_result_rent_long_1_2_moskva_04_Feb_2023_06_58_21_765479.csv
The page from which the collection of information begins:
https://cian.ru/cat.php?engine_version=2&p=1®ion=1&offer_type=flat&deal_type=rent&room2=1&room3=1&with_neighbors=0&type=4
Collecting information from pages with list of announcements
1 | 1 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of parsed: 28. Progress ratio 50 %. Average price: 204 642 rub
2 | 2 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of parsed: 56. Progress ratio 100 %. Average price: 236 426 rub
{ 'accommodation_type': 'flat',
'deal_type': 'rent',
'city': 'Москва',
'district': 'Замоскворечье',
'underground': 'Новокузнецкая',
'street': 'Космодамианская набережная',
'floor': 5,
'floors_count': 12,
'total_meters': 85.0,
'living_meters': 55.0,
'kitchen_meters': 11.0,
'rooms_count': 3,
'year_of_construction': '1954',
'price_per_month': 93000,
'price_per_m2': 1094,
'commissions': 50,
'author': 'Apple Real Estate',
'author_type': 'real_estate_agent',
'phone': '+79057145354',
'link': 'https://www.cian.ru/rent/flat/282487326/',
}
The collection of information from the pages with list of announcements is completed
Total number of parced announcements: 56. Average price per month: 236 426 rub
Конфигурация
Функция parse имеет следующий аргументы:
- deal_type - тип объявления, к примеру, долгосрочная, краткосрочная аренда, продажа ("rent_long", "rent_short", "sale")
- accommodation_type - вид жилья, к примеру, квартира, комната, дом, часть дома, таунхаус ("flat", "room", "house", "house-part", "townhouse")
- location - локация объявления, к примеру, Казань (для просмотра доступных мест используйте cianparser.list_cities())
- rooms - количество комнат, к примеру, 1, (1,3, "studio"), "studio, "all"; по умолчанию любое ("all")
- start_page - страница, с которого начинается сбор данных, по умолчанию, 1
- end_page - страница, с которого заканчивается сбор данных, по умолчанию, 100
- is_saving_csv - необходимо ли сохранение собираемых данных (в реальном времени в процессе сбора данных) или нет, по умолчанию False
- is_latin - необходимо ли преобразывание любой встрещающейся кириллицы в латиницу, по умолчанию False
- is_express_mode - необходимо ли ускорение (в 5-10 раз) сбор данных (но без трех полей, см примечание), по умолчанию True
- is_by_homeowner - необходимо ли собирать данные с объявлений, созданных только собственниками, по умолчанию False
Если имеется желание собрать данные со всех страниц, то можно пропустить аргументы start_page и end_page. В проекте предусмотрен функционал корректного завершения в случае окончания страниц. По данному моменту, следует изучить раздел Ограничения
В настоящее время функционал доступен только по продажам (sale) и долгосрочном арендам (rent_long) квартир и студий (flat).
Признаки, получаемые в ходе сбора данных с предложений по долгосрочной аренде недвижимости
- district - район
- underground - метро
- street - улица
- floor - этаж
- floors_count - общее количество этажей
- total_meters - общая площадь
- living_meters - жилая площади
- kitchen_meters - площадь кухни
- rooms_count - количество комнат
- year_construction - год постройки здания
- price_per_month - стоимость в месяц
- price_per_m2 - стоимость на квадратный метр
- commissions - комиссия, взымаемая при заселении
- author - автор объявления
- author_type - тип автора
- phone - номер телефона в объявлении
- link - ссылка на объявление
Возможные значения поля author_type:
- real_estate_agent - агентство недвижимости
- homeowner - собственник
- realtor - риелтор
- official_representative - ук оф.представитель
- representative_developer - представитель застройщика
- developer - застройщик
- unknown - без указанного типа
Признаки, получаемые в ходе сбора данных с предложений по продаже недвижимости
Признаки аналогичны вышеописанным, кроме отсутствия полей price_per_month и commissions.
При этом появляются новые:
- price - стоимость недвижимости
- residential_complex - название жилого комплекса
Сохранение данных
Имеется возможность сохранения собираемых данных в режиме реального времени. Для этого необходимо подставить в аргументе is_saving_csv значение True.
Пример получаемого файла:
cian_parsing_result_rent_long_1_2_moskva_04_Feb_2023_06_58_21_765479.csv
author | author_type | link | city | deal_type | accommodation_type | floor | floors_count | rooms_count | total_meters | price_per_month | price_per_m2 | commissions | year_of_construction | living_meters | kitchen_meters | phone | district | street | underground |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Intermark Real Estate | real_estate_agent | https://www.cian.ru/rent/flat/278903117/ | Москва | rent | flat | 4 | 6 | 3 | 50.0 | 180000 | 3600 | 0 | 1911 | 32.0 | 8.0 | +79676513428 | Пресненский | Малый Предтеченский переулок | Краснопресненская |
Capital Mars | real_estate_agent | https://www.cian.ru/rent/flat/282506328/ | Москва | rent | flat | 5 | 9 | 2 | 89.0 | 180000 | 2022 | 0 | 2006 | 53.0 | 15.0 | +79660619653 | Хамовники | 3-я Фрунзенская | Спортивная |
MERSI | real_estate_agent | https://www.cian.ru/rent/flat/281562376/ | Москва | rent | flat | 8 | 16 | 2 | 80.0 | 200000 | 2500 | 0 | 2012 | -1 | -1 | +79652455850 | Замоскворечье | Мытная | Октябрьская |
Ограничения
Сайт выдает списки с объявлениями лишь до 54 странцы включительно. Это примерно 28 * 54 = 1512 объявлений. Поэтому, если имеется желание собрать как можно больше данных, то следует использовать более конкретные запросы (по количеству комнат).
К примеру, вместо того, чтобы при использовании указывать rooms=(1, 2), стоит два раза отдельно собирать данные с параметрами rooms=1 и rooms=2 соответственно.
Таким образом, максимальная разница может составить 1 к 6 (студия, 1, 2, 3, 4, 5 комнатные квартиры), то есть 1512 к 9072.
Примечание
-
В некоторых объявлениях отсутсвуют данные по некоторым признакам (год постройки, жилые кв метры, кв метры кухни итп). В этом случае проставляется значение -1 либо пустая строка для числового и строкового типа поля соответственно.
-
Для отсутствия блокировки по IP в данном проекте задана пауза (в размере 4-5 секунд) после сбора информации с каждой отдельной взятой страницы.
-
Не рекомендутся производить несколько процессов сбора данных параллельно (одновременно) на одной машине (см. пункт 2).
-
Имеется флаг is_express_mode, при помощи которого можно существенно (в 5-10 раз) ускорить сбор данных благодаря отсутствию необходимости заходить на каждую страницу с предложением. Однако в таком случае не будут собираться данные о площади кухни, годе постройки здания и номере телефона.
-
Данный парсер не будет работать в таком инструменте как Google Colaboratory. См. подробности
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cianparser-0.4.19-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1dae247da6b9da0b1b44f7d4338122540aa3e555c523dd53ccda973f29ae534 |
|
MD5 | e3e0d8367842685236d14c71c6472950 |
|
BLAKE2b-256 | 4ed81ccb24606c491b5be62a90b830cb4130850a6e816f6a71b149818072e4f5 |