class ESpider::Front::Dianping::Hotel::List

Constants

BaseUri

Attributes

total[R]

Public Class Methods

new(cityId,areaId='') click to toggle source
# File lib/espider/front/dianping/hotel/list.rb, line 10
def initialize(cityId,areaId='')
        @cityId = cityId
        @areaId = areaId
        url = File.join(BaseUri,cityId,"60?district=#{areaId}")
        @list = Nokogiri::HTML(HTTParty.get(url, :headers => {"User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"}))
        @total = @list.css('div.tit span').text.sub(/[\(\)]/,'').to_i
end

Public Instance Methods

areas() click to toggle source
# File lib/espider/front/dianping/hotel/list.rb, line 17
def areas
        result = []
        areas = @list.css('div.filter-dist div.con div.list-box ul li')
        areas.each do |a|
                areaId = a.css('input').first['data-query-value']
                areaName = a.css('label').first.text.strip
                result << [areaId,areaName] if !result.include?([areaId,areaName])
        end
        areas = @list.css('div.filter-dist div.popup div.con dl dd')
        areas.each do |a|
                areaId = a.css('input').first['data-query-value']
                areaName = a.css('label').first.text.strip
                result << [areaId,areaName] if !result.include?([areaId,areaName])
        end
        result
end
hotels(page) click to toggle source
# File lib/espider/front/dianping/hotel/list.rb, line 33
def hotels(page)
        url = File.join(BaseUri,@cityId,'60',"p#{page}?district=#{@areaId}")
        @list = Nokogiri::HTML(HTTParty.get(url, :headers => {"User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"}))
        result = []
        hotels = @list.css('div.hotel-list-box div.h-list-box ul li.J_hotel-block')
        hotels.each do |hotel|
                hotel_id = hotel['data-shopid']
                hotel_name = hand_str_nil(hotel,'div.tit h4',true)
                hotel_tel = hand_str_nil(hotel,'div.hotel-info p span.tel',true)
                hotel.css('div.hotel-info p span.tel').remove
                hotel_addr = hand_str_nil(hotel,'div.hotel-info p.addr',true)
                hotel_area = hand_str_nil(hotel,'div.hotel-info p.place a',true)
                hotel_classify = hand_str_nil(hotel,'div.hotel-info p.tags em a',true)
                hotel_title = hand_str_nil(hotel,'div.hotel-info p.promo em a',false,'title')
                hotel_price = hand_str_nil(hotel,'div.hotel-remark div.price strong',true).sub('¥','')
                result << [hotel_id,hotel_name,hotel_addr,hotel_tel,hotel_area,hotel_classify,hotel_title,hotel_price]
        end
        result
end