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