rentspot

搞笑一把!

立项动机

这几天大家在找房上面费事颇多,发现帝都找房绝对是一个很重要的 business。如何能方便北漂一族找到合适的房源,同时也帮助各个房东解决租房难问题,并且置遭天杀的中介们于死地!

项目范围

  • 抓取主流网站房源信息
  • 为用户提供 personalized ranking
  • 对中介进行检测

实现

这里完成抓取我们使用了 scrapy 的 CrawlSpider,下面是一个基本的用法,

class ganji_spider (CrawlSpider):
    name = 'ganji'
    allowed_domains = ['ganji.com']
    start_urls = ['http://bj.ganji.com/fang1/haidian/']
    rules = (
        Rule (SgmlLinkExtractor(allow=(r'/fang1/\d{8,10}x\.htm', )),
              callback='parse_detail'),
        Rule (SgmlLinkExtractor(allow=(r'/fang1/haidian/f\d{2,3}/', )))
    )

    def parse_detail (self, response):
        url = response.url
        hxs = HtmlXPathSelector (response)
        res = rent ()
        title = hxs.select ('//div[@class="detail_title"]/h1/text()').extract ()[0]
        # many more

注意这里的 rule 的写法大致是说碰到啥 link 使用啥 parser,但是如果不写 parser,这个 spider 就会 follow。这样就能轻松的爬取整个 list site。需要注意的是最好在 settings 里面通过 DOWNLOAD_DELAY 设置 QPS,否则过多的连接可能导致被 ban。与前面的例子差不多,我们也使用 sqlite 作为数据 persistence 的地方,然后使用 django 搭建了一个 web service,通过 jquery 写了一个简单的前端,大致的代码如下

function update () {
  $.getJSON (
    '/update?price=' + $('#price').val()
  + '&comm=' + $('#comm').val()
  + '&type=' + $('#type').val()
  + '&addr=' + $('#addr').val()
  + '&pub=' +  $('#pub').val(),
    function (data) {
      $('#latest').children().removeClass ('new') ;
      if (data.length > 0)
        $('#pub').val(data[0].pub) ;
      for(var i = 0 ; i < data.length ; ++ i) {
        var $s = $(render_rent (data[i])) ;
        $s.bind ( 'inview', function (event, visible) {
          if (visible) {
            $(this).removeClass ('new') ;
            $(this).unbind ('inview') ;
          }
        } ) ;
        $s.click ( function () {
          $(this).appendTo ('#selected') ;
          $(this).click ( function () {
            $(this).remove () ;
          } ) ;
        } ) ;
        $s.appendTo('#latest') ;
      }
    }
  ) ;
}
$( function () {
  update () ;
  var timer = $.timer(update, 60000, true) ;
} ) ;

这里使用了 inview 和 timer 两个 jquery 的 plugin。其实用的功能还是挺简单的。没怎么折腾 CSS,截图如下,

RentSpot 的前端

Roadmap

呵呵,剩下的自然就是做 agent detector 啦。我们可以爬用户发表的房子个数,做多个网站的比较,通过 OCR 识别电话号码。兴许写篇 paper 是个好事 🙂

——————
And God said to Abraham, As for Sarai your wife, you shall not call her name Sarai, but Sarah shall her name be.

Advertisements
rentspot

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s