class MMonitor::Strategies::Suning

search.suning.com/%E5%B7%B4%E9%BB%8E%E6%AC%A7%E8%8E%B1%E9%9B%85/cityId=9264&iy=-1&ct=1&si=5&st=0

Public Instance Methods

css_path() click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 11
def css_path
  {
    body:      'body>div.wrap-search>div.w1190>div.proList.mb10',
    list:      'div#productTab>div#proShow>ul.container',
    item:      'li.item',
    total:     'div#filterContent>div.searchKeyT>i',
    pages:     '#refresh>div.page>span>i#pageTotal',
    spu_id:    'name',
    sku_id:    'class',
    title:     'div > span > a > p',
    photo_url: 'a > img',
    price_url: 'div > p > img'
  }
end
get_html(url, params) click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 51
def get_html(url, params)
  uri = Addressable::URI.new
  uri.query_values = params
  Spider.get_html("#{url}&#{uri.query}")
end
page(num) click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 47
def page(num)
  num-1
end
page_key() click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 43
def page_key
  'cp'
end
price() click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 39
def price
  price_from_ajax(sku_id) || pirce_from_ocr(price_url)
end
price_url() click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 34
def price_url # 产品售价图片(可选)
  dom = self.item.at(css_path[:price_url])
  dom['src2'] unless dom.nil?
end
provider() click to toggle source

输出的产品

# File lib/mmonitor/strategies/suning.rb, line 7
def provider
  :suning
end
sku_id() click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 30
def sku_id
  self.item[css_path[:sku_id]].split(' ')[0]
end
spu_id() click to toggle source
# File lib/mmonitor/strategies/suning.rb, line 26
def spu_id
  self.item[css_path[:spu_id]].to_i
end

Private Instance Methods

price_from_ajax(sku_id) click to toggle source

浏览记录,获取价格

# File lib/mmonitor/strategies/suning.rb, line 59
def price_from_ajax(sku_id)
  url = "http://product.suning.com/0000000000/browseHistory_10052_10051_#{sku_id}_9264_.html"
  json = MMonitor::Spider.get_json(url)
  return json['price'].to_f if json.has_key?('price')
  nil
end