Как стать автором
Обновить

Как автоматизировать поиск квартиры

В жизни каждого из нас наступает такой момент, когда в голову забирается мысль о смене места жительства. Поскольку переезжать в другую страну я морально не готов, решил переместиться «по горизонтали»: в другой район города.

Продажу квартиры поручил агенту, который, к слову, бился над этой задачей около полугода. А вот поиском решил заняться сам. В сети множество сайтов, где публикуют объявления о продаже квартир. Крупнейший из них, как мне кажется, Бюллетень недвижимости (по крайней мере, в Петербурге). Но есть один нюанс: «портал» давно не обновлялся технически, поэтому возможность подписаться на интересующие объявления не представляется возможным.

Стоит отметить, что по образованию я юрист, занимаюсь недвижимостью (в основном дело имею с земельными участками). Отношение к программированию имею крайне опосредованное: в 1999, когда еще пешком под стол ходил, пытался разобрать HTML газеты Коммерсант по кусочкам. Чуть позже решил изучить PHP, но не смог подключиться к базе данных. Так был заброшен на полки талмуд по программированию.

Спустя 10 лет появилась острая необходимость сделать сайт-визитку, решил попробовать свои силы и… Втянулся. С тех пор запустил парочку малоизвестных проектов, оттачивая мастерство. Обратился в рельсоводство.

Это было краткое отступление. Вернемся же к квартирам. Потратив несколько дней на изучение предложений на рынке, столкнулся с небольшой проблемой: количество листиков с разными телефонами и адресами, заметками и мыслями просто зашкаливало. Как вариант рассматривался икселевский файл, где все это можно было вести чуть более удобно. Но путь был выбран другой.

За несколько часов набросал небольшой сайт-парсер, который крутиться на удаленной «машине». Основное его предназначение: сбор сначала всех интересующих объявлений, а затем, дважды в день, сбор новых и уведомление меня об этом по электронной почте.

Так как на сайте Бюллетеня недвижимости нет возможности выбрать количество объектов, выводимое на страницу, создается довольно таки большой «пагинатор». Писать код для перехода по этим ссылкам не было никакого желания, поэтому был использован небольшой хак: отображение версии для печати, где все объекты были собраны в одну большую таблицу.

image

Небольшое пояснение: пожелания по району у меня довольно таки определенные, поэтому ссылка для парсера хардкорная. Дальше все просто: собираются все адреса объектов и ссылки на его карточку и заносятся в базу. На этом этапе идет проверка по ID-объекта на сайте-доноре. Все это обернуто в rake-задание.

namespace :fetch do
  task :spb => :environment do
    a = Mechanize.new
    site = "http://www.bn.ru/zap_fl.phtml?kkv1=2&kkv2=2&price1=&price2=4000&so1=&so2=&sk1=&sk2=&first=1&sort_ord=0&region1=1&region6=6&region42=42&region44=44&region47=47&text=&start=0&sort=0&print=printall&sorttype=0&sortordtype=0"
    flats = a.get(site).links_with(:href => %r{/detail/})
    flats.each do |flat|
      unless flat.text.blank?
        empty, detail, pflats, id = flat.href.to_s.split("/")
        address = flat.text
        bn_id = id.gsub("?from=", '').gsub("psearch", "").gsub("search", "").gsub(".html", "")
        new_flat = Flat.where(bn_id: bn_id).first_or_create address: address, bn_new: true, visible: true, status: 0
      end
    end
  end
end


Интерфейс прост: объекты деляться на те, что в производстве и дефектные (те, которые по тем или иным причинам были мной отфильтрованы). Все заметки (комментарии) заносят в текстовое поле. В качестве «украшательства» был выбран Bootstrap, чтобы не тратить лишнее время.

image

В целом, получилась довольно таки удобная штука, которая, к слову, сэкономила уйму времени.

К слову, квартиру я пока не выбрал, езжу на просмотры.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.