Парсер для сайта Cian.ru (Циан)
Необходимо спарсить подробные данные по продажам квартиры в новостройках г. Москвы.
По сколько сам сайт хорошо борется с парсингом необходимо будет обойти ряд трудностей, что поможет провести эффективный парсинг в относительно сжатые сроки 2-3 дня.
Примерный объем объявлений, которые необходимо получить: 50 000
Логика парсера:
1) По заданным условиям поиска (Город, Метро, Новостройка, Продажа, Квартиры, Кол-во комнат; возможно будет добавлено еще 1-2 условия) необходимо подгрузить объявления.
Тут появляется первая трудность, сайт не выдает в открытом поиске все найденные объявления по заданным условиям, поэтому после того как будут получены все объявления со страниц, необходимо будет поменять тип сортировки (например от макс. цены к мин., от бОльшего размера квартиры (м2) к меньшему, итп.) , что позволит увидеть объявления, которые ранее не были спаршены.
2) Зайти в каждое объявление (карточку), забрать из нее все хар-ки, которые будут указаны (где-то их больше, где-то меньше, но в среднем порядка 6-7 штук, список будет чуть ниже).
3) Объявление можно будет идентифицировать (ID) через ссылку, поэтому перед тем как перейти по ссылке карточки (объявления), нужно будет проверять, а не был ли оно уже спаршено.
4) Собрать всю статистику либо в одну большую .csv, либо в несколько раздельных файлов (для каждой станции метро).
5) Очевидно, что подобный способ парсинга будет вызывать проверку по капче и будет довольно медлительный, поэтому необходимо организовать мультипроцессинг с использованием прокси, чтобы сбор шел с разных IP одновременно.
Хар-ки, которые нужны:
1. Автор объявления
2. Тип автора (частное лицо, девелопер, итп.)
3. ссылка (она же уник. идентификатор)
4. Тип жилья (квартира, апартаменты, итп.; нам нужны только квартиры, но это необходимо чтобы убедиться в том, что парсинг производится валидно)
5. Этаж
6. Этажей в здании
7. Кол-во комнат
8. Общая площадь (м2)
9. Жилая площадь (м2)
10. Сдан ли дом
11. Год сдачи (постройки)
12. Отделка
13. Санузел (кол-во)
14. Тип отопления
15. Тип дома
16. Тип жилья (по идее все должны быть новостройки, поэтому эта метрика скорее больше для контроля)
17. Адрес
18. Метро
19. Район
20. ЖК
21. Расстояние до ближайшего метро
Если получится, доп.
22. Координаты_Х
23. Координаты_Y
Это в теории, возможно вытащить с карты.
В случае отсутствии хар-ки, поставить значение -1. Со всеми хар-ками помогу разобраться, подскажу где они находятся, как их можно вытащить.
Есть пример кода и библиотеки на Python, но требует явной доработки и скорее может быть использовано как костыль.
Основной трудностью будет обход блокировки со стороны сайта и запуск параллельного парсинга. При необходимости, прокси будут оплачены отдельно. Список метро Москвы также имеется в готов виде.
По срокам: в идеале завершить программу за 1-2 дня, закончить сбор за 3-4 дня. По цене готов обсуждать.
По сколько сам сайт хорошо борется с парсингом необходимо будет обойти ряд трудностей, что поможет провести эффективный парсинг в относительно сжатые сроки 2-3 дня.
Примерный объем объявлений, которые необходимо получить: 50 000
Логика парсера:
1) По заданным условиям поиска (Город, Метро, Новостройка, Продажа, Квартиры, Кол-во комнат; возможно будет добавлено еще 1-2 условия) необходимо подгрузить объявления.
Тут появляется первая трудность, сайт не выдает в открытом поиске все найденные объявления по заданным условиям, поэтому после того как будут получены все объявления со страниц, необходимо будет поменять тип сортировки (например от макс. цены к мин., от бОльшего размера квартиры (м2) к меньшему, итп.) , что позволит увидеть объявления, которые ранее не были спаршены.
2) Зайти в каждое объявление (карточку), забрать из нее все хар-ки, которые будут указаны (где-то их больше, где-то меньше, но в среднем порядка 6-7 штук, список будет чуть ниже).
3) Объявление можно будет идентифицировать (ID) через ссылку, поэтому перед тем как перейти по ссылке карточки (объявления), нужно будет проверять, а не был ли оно уже спаршено.
4) Собрать всю статистику либо в одну большую .csv, либо в несколько раздельных файлов (для каждой станции метро).
5) Очевидно, что подобный способ парсинга будет вызывать проверку по капче и будет довольно медлительный, поэтому необходимо организовать мультипроцессинг с использованием прокси, чтобы сбор шел с разных IP одновременно.
Хар-ки, которые нужны:
1. Автор объявления
2. Тип автора (частное лицо, девелопер, итп.)
3. ссылка (она же уник. идентификатор)
4. Тип жилья (квартира, апартаменты, итп.; нам нужны только квартиры, но это необходимо чтобы убедиться в том, что парсинг производится валидно)
5. Этаж
6. Этажей в здании
7. Кол-во комнат
8. Общая площадь (м2)
9. Жилая площадь (м2)
10. Сдан ли дом
11. Год сдачи (постройки)
12. Отделка
13. Санузел (кол-во)
14. Тип отопления
15. Тип дома
16. Тип жилья (по идее все должны быть новостройки, поэтому эта метрика скорее больше для контроля)
17. Адрес
18. Метро
19. Район
20. ЖК
21. Расстояние до ближайшего метро
Если получится, доп.
22. Координаты_Х
23. Координаты_Y
Это в теории, возможно вытащить с карты.
В случае отсутствии хар-ки, поставить значение -1. Со всеми хар-ками помогу разобраться, подскажу где они находятся, как их можно вытащить.
Есть пример кода и библиотеки на Python, но требует явной доработки и скорее может быть использовано как костыль.
Основной трудностью будет обход блокировки со стороны сайта и запуск параллельного парсинга. При необходимости, прокси будут оплачены отдельно. Список метро Москвы также имеется в готов виде.
По срокам: в идеале завершить программу за 1-2 дня, закончить сбор за 3-4 дня. По цене готов обсуждать.