class MMonitor::Strategies::Jd
Public Instance Methods
css_path()
click to toggle source
# File lib/mmonitor/strategies/jd.rb, line 11 def css_path { body: 'body>div.w.main>div.right-extra', list: 'div#plist>ul.list-h', item: 'li', total: 'div#filter>div.fore1>div.total>span>strong', pages: 'div#filter>div.fore1>div#top_pagi>span', spu_id: 'sku', title: 'div>div.p-name>a', photo_url: 'div>div.p-img >a>img' } end
extra()
click to toggle source
# File lib/mmonitor/strategies/jd.rb, line 37 def extra get_prices(self.items.keys) end
pages()
click to toggle source
# File lib/mmonitor/strategies/jd.rb, line 33 def pages self.body.at(css_path[:pages]).text.split('/')[1].to_i end
photo_url()
click to toggle source
# File lib/mmonitor/strategies/jd.rb, line 29 def photo_url # 产品图片 self.item.at(css_path[:photo_url])['data-lazyload'] end
provider()
click to toggle source
输出的产品
# File lib/mmonitor/strategies/jd.rb, line 7 def provider :jd end
spu_id()
click to toggle source
# File lib/mmonitor/strategies/jd.rb, line 24 def spu_id # 产品ID id = squish( self.item[css_path[:spu_id]] ) id == 'scroll_loading' ? nil : id end
Private Instance Methods
get_prices(sku_ids)
click to toggle source
获取价格
# File lib/mmonitor/strategies/jd.rb, line 56 def get_prices(sku_ids) url = "http://p.3.cn/prices/mgets" sku_ids = sku_ids.map { |sku_id| "J_#{sku_id}" } sku_ids.each_slice(100) do |skuids| params = { skuids: skuids.join(',') } prices = MMonitor::Spider.get_json(url, params) unless prices.empty? set_prices(prices) end end end
set_prices(prices)
click to toggle source
设置价格
# File lib/mmonitor/strategies/jd.rb, line 43 def set_prices(prices) prices.each do |item| id = item['id'].gsub('J_', '') if self.items.has_key?(id) && item['m'].to_i > 0 self.items[id][:tag_price] = item['m'].to_f self.items[id][:price] = item['p'].to_f else puts item['id'] puts '_'*88 end end end