class ESpider::Front::Kuxun::Detail

Public Class Methods

new(id) click to toggle source

id example: beijing-xihuajingzhao

# File lib/espider/front/kuxun/detail.rb, line 10
def initialize(id)
  @id = id
  @host = 'jiudian.kuxun.cn'
  @current_url = URI::HTTP.build(
      :host => @host,
      :path => "/#{@id}-jiudian.html"
  ).to_s
  @options = {
    :headers => {
      "User-Agent" => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36'
    }
  }
  @hotel = Nokogiri::HTML(HTTParty.get(@current_url,@options))
end

Public Instance Methods

address() click to toggle source
# File lib/espider/front/kuxun/detail.rb, line 30
def address
  return '' if title_bd.nil?
  title_bd.search('p').first.text.gsub!(/\s+/, ' ').sub('地址:','').squeeze.strip
end
facilities() click to toggle source

example:

{“title”=>“酒店设施”, “tags”=>[“商务中心”, “送餐服务”, “洗衣服务”, “叫醒服务”, “旅游服务”, “前台贵重物品保险柜”, “收费停车”, “外币兑换”, “公共区域免费Wi-Fi”]}, {“title”=>“康体娱乐”, “tags”=>}, {“title”=>“会议设施”, “tags”=>[“多功能厅:剧院式可容纳80人”, “另有2个会议室,均容纳30人”]}, {“title”=>“餐饮服务”, “tags”=>[“中餐厅:主营鲁菜、川菜、可提供北京风味小吃”, “西餐厅:可提供中西自助餐、酒水”]}
# File lib/espider/front/kuxun/detail.rb, line 68
def facilities
  return @facilities if @facilities
  @facilities = []
  @hotel.search("//ul[@class='OpenFacCont']/li").each do |li|
    title = li.search('b').first.text.strip
    tags = li.search('p').first.text.strip.sub(/。$/,'')
    if tags.include?';'
      tags = tags.split(';')
    else
      tags = tags.split('、')
    end
    @facilities << {
      'title' => title,
      'tags' => tags
    }
  end
  @facilities
end
images() click to toggle source

example: [{:text=>“客房”, :small_pic=>“”, :big_pic=>“”}, {:text=>“客房”, :small_pic=>“”, :big_pic=>“”}, {:text=>“客房”, :small_pic=>“”, :big_pic=>“”}

# File lib/espider/front/kuxun/detail.rb, line 42
def images
  url = URI::HTTP.build(
      :host => @host,
      :path => "/#{@id}-jiudian-tupian.html"
  ).to_s
  options = {
    :headers => {
      "User-Agent" => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36'
    }
  }
  @images = Nokogiri::HTML(HTTParty.get(url,@options))
  results = []
  @images.search("//ul[@id='detail_image_全部']/li").each do |li|
    img = li.search('img').first['src']
    img = li.search('img').first['original'] if img.include?'grey.gif'
    title = li.search('p').first
    results << {
      :text => title.text,
      :small_pic => img,
      :big_pic => img.sub(/H.jpg$/,'I.jpg')
    }
  end
  results
end
intro() click to toggle source
# File lib/espider/front/kuxun/detail.rb, line 35
def intro
  return '' if title_bd.nil? or title_bd.search('p')[1].nil?
  title_bd.search('p')[1].text.squeeze.gsub('描述:','').strip
end
name() click to toggle source
# File lib/espider/front/kuxun/detail.rb, line 25
def name
  return '' if @hotel.search("h1").first.nil?
  @hotel.search("h1").first.text.strip
end
xy() click to toggle source
# File lib/espider/front/kuxun/detail.rb, line 86
def xy
  src = @hotel.to_s
  return [0, 0] if src.match(/var\s+b_longitude\s+=\s+\"(\d+\.\d+)\"/).nil?
  return [src.match(/var\s+b_longitude\s+=\s+\"(\d+\.\d+)\"/)[1], src.match(/var\s+b_latitude\s+=\s+\"(\d+\.\d+)\"/)[1]]
end

Private Instance Methods

title_bd() click to toggle source
# File lib/espider/front/kuxun/detail.rb, line 93
def title_bd
  @TitleBd ||= @hotel.search("//div[@class='TitleBd']").first
end