TaoBaoApi 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,7 +3,10 @@
3
3
  通过淘宝或天猫商品链接获取商品信息,商品信息包括标题、价格、图片。
4
4
 
5
5
  ## 环境说明
6
- ruby 1.9.3 2.0.0未测试,可能会有问题
6
+ 当前版本0.0.6 ruby 1.9.3 2.0.0未测试,nokogiri版本可能会有些问题
7
+
8
+ ## 依赖库
9
+ nokogiri, faraday, faraday_middleware
7
10
 
8
11
  ## 安装方法
9
12
 
@@ -25,11 +28,14 @@ ruby 1.9.3 2.0.0未测试,可能会有问题
25
28
 
26
29
  require 'TaoBaoApi'
27
30
 
28
- good = TaoBaoApi::Good.new
31
+ good = TaoBaoApi::Good.new 'http://item.taobao.com/item.htm?id=16434110195'
29
32
 
30
- info = good.get_info 'http://item.taobao.com/item.htm?id=16434110195'
33
+ info = good.get_info
31
34
 
32
- p info #hash format,{:title => xxx, :price => xxx, :img => xxx, :url => url}
35
+ p info #hash format,{:title => xxx, :price => xxx, :images => [], :url => url}
33
36
 
34
37
  ```
35
- 测试文件见test.rb
38
+ 测试文件见test.rb
39
+
40
+ ## Todo
41
+ * 获取促销价
data/TaoBaoApi.gemspec CHANGED
@@ -23,4 +23,7 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  # spec.add_dependency "nokogiri", '1.5.10'
25
25
  spec.add_dependency "nokogiri"
26
+ spec.add_dependency 'faraday'
27
+ # spec.add_dependency 'faraday-cookie_jar'
28
+ spec.add_dependency 'faraday_middleware'
26
29
  end
data/lib/TaoBaoApi.rb CHANGED
@@ -1,28 +1,53 @@
1
1
  require "TaoBaoApi/version"
2
- require 'nokogiri'
3
- require 'open-uri'
2
+ require 'nokogiri'
3
+ require 'faraday'
4
+ # require 'faraday-cookie_jar'
5
+ require 'faraday_middleware'
4
6
 
5
7
  module TaoBaoApi
8
+
6
9
  class Good
7
- def get_info url
8
- return 'good_url_nil' if url.nil?
10
+ def initialize(url)
11
+ @url = url_filter(url)
12
+
13
+ if @url.include? 'tmall'
14
+ init_url = 'http://www.tmall.com'
15
+ else
16
+ init_url = 'http://www.taobao.com/'
17
+ end
18
+
19
+ @conn = Faraday.new(:url => init_url) do |f|
20
+ f.use FaradayMiddleware::FollowRedirects , limit: 10
21
+
22
+ f.request :url_encoded
23
+ f.adapter :net_http
24
+ f.headers[:referer] = init_url
25
+ f.headers[:user_agent] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0'
26
+ # f.response :logger
27
+ # f.use :cookie_jar
28
+ end
29
+ end
30
+
31
+ def get_info
32
+ return 'good_url_nil' if @url.nil?
9
33
 
10
- url = url_filter(url)
11
- doc = Nokogiri::HTML(open(url))
34
+ response = @conn.get @url
35
+
36
+ doc = Nokogiri::HTML(response.body)
12
37
  doc.encoding = 'utf-8'
13
-
38
+
14
39
  begin
15
- title = doc.css('title').first.text.split('-').first.strip
40
+ title = title_filter(doc.css('title').first.text)
16
41
  rescue NoMethodError
17
42
  return 'good_not_exists'
18
43
  end
19
44
 
20
45
  images = []
21
- if url.include? 'taobao'
22
- price = doc.css('em.tb-rmb-num').first.text
46
+ if @url.include? 'taobao'
47
+ price = price_filter(doc.css('em.tb-rmb-num').first.text)
23
48
  img_src = 'data-src'
24
- elsif url.include? 'tmall'
25
- price = doc.css('.J_originalPrice').first.text.strip
49
+ elsif @url.include? 'tmall'
50
+ price = price_filter(doc.css('.J_originalPrice').first.text.strip)
26
51
  img_src = 'src'
27
52
  else
28
53
  return 'good_url_is_not_taobao'
@@ -36,12 +61,19 @@ module TaoBaoApi
36
61
  {:title => title,
37
62
  :price => price,
38
63
  :images => images,
39
- :url => url}
64
+ :url => @url}
40
65
  end
41
66
 
42
67
  private
43
- def image_filter(imgUrl)
44
- "#{imgUrl.split('.jpg').first}.jpg"
68
+ #小图转大图链接
69
+ def image_filter(img_url)
70
+ img_url = "#{img_url.split('.jpg').first}.jpg"
71
+
72
+ if img_url.include? '60x60'
73
+ img_url = img_url.gsub('60x60','460x460')
74
+ end
75
+
76
+ img_url
45
77
  end
46
78
 
47
79
  def url_filter(url)
@@ -53,5 +85,15 @@ module TaoBaoApi
53
85
  end
54
86
  end
55
87
 
88
+ #去除标题空格
89
+ def title_filter(title)
90
+ title = title.split('-').first.strip.gsub(' ','') if !title.nil?
91
+ end
92
+
93
+ #格式化16.0 - 18.0 类似这样的价格区间
94
+ def price_filter price
95
+ price = price.split('-').first.strip if !price.nil? && price.include?('-')
96
+ end
97
+
56
98
  end
57
99
  end
@@ -1,3 +1,3 @@
1
1
  module TaoBaoApi
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/test.rb CHANGED
@@ -1,8 +1,13 @@
1
1
  require File.join(File.dirname(__FILE__), 'lib', 'TaoBaoApi')
2
2
 
3
- good = TaoBaoApi::Good.new
3
+ url = 'http://item.taobao.com/item.htm?id=16434110195'
4
+ # url = 'http://detail.tmall.com/item.htm?id=35513218520'
5
+ # url = 'http://item.taobao.com/item.htm?spm=a1z09.5.0.0.x2gUPA&id=16718391999'
6
+ # url = 'http://item.taobao.com/item.htm?id=20132398689'
7
+ # url ='http://detail.tmall.com/item.htm?id=9153380600'
8
+ # url ='http://detail.tmall.com/item.htm?id=17350703554&spm=a1z09.5.0.0.PCBxNl'
9
+ good = TaoBaoApi::Good.new url
4
10
 
5
- url = 'http://detail.tmall.com/item.htm?id=35576507007'
6
- info = good.get_info url
11
+ info = good.get_info
7
12
 
8
- p info
13
+ p info
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: TaoBaoApi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-20 00:00:00.000000000 Z
12
+ date: 2014-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -59,6 +59,38 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: faraday
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: faraday_middleware
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  description: ! ' get goods info from taobao'
63
95
  email:
64
96
  - gwikimo@gmail.com