baidu 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/baidu.rb +35 -8
  2. metadata +1 -1
@@ -106,20 +106,47 @@ class BaiduResult
106
106
  end
107
107
 
108
108
  def ranks(host=nil)
109
- @ranks ||= @page.search("//table[@class=\"result\"]").map{|table|@page.search("//table[@id=\"#{table['id']}\"]//span[@class=\"g\"]").first}.map{|rank|URI('http://'+rank.text.strip.split(/\s/).first).host unless rank.nil?}
109
+ return @ranks unless @ranks.nil?
110
+ @ranks = Hash.new
111
+ @page.search("//table[@class=\"result\"]").each do |table|
112
+ id = table['id']
113
+ @ranks[id] = Hash.new
114
+ url = @page.search("//table[@id=\"#{table['id']}\"]//span[@class=\"g\"]").first
115
+ a = @page.search("//table[@id=\"#{table['id']}\"]//h3/a")
116
+ @ranks[id]['text'] = a.text
117
+ @ranks[id]['href'] = a.first['href'].sub('http://www.baidu.com/link?url=','').strip
118
+ unless url.nil?
119
+ url = url.text.strip
120
+ @ranks[id]['host'] = URI(URI.encode("http://#{url}")).host
121
+ else
122
+ @ranks[id]['host'] = nil
123
+ end
124
+ end
125
+ #@page.search("//table[@class=\"result\"]").map{|table|@page.search("//table[@id=\"#{table['id']}\"]//span[@class=\"g\"]").first}.map{|rank|URI(URI.encode('http://'+rank.text.strip)).host unless rank.nil?}
110
126
  if host.nil?
111
127
  @ranks
112
128
  else
113
- @ranks.each_with_index.map{|h,i| i if !h.nil? and h==host}.compact
129
+ host_ranks = Hash.new
130
+ @ranks.each do |id,line|
131
+ if host.class == Regexp
132
+ host_ranks[id] = line if line['host'] =~ host
133
+ elsif host.class == String
134
+ host_ranks[id] = line if line['host'] == host
135
+ end
136
+ end
137
+ host_ranks
138
+ #'not finished'#@ranks.each_with_index.map{|h,i| i if !h.nil? and h==host}.compact
114
139
  end
115
140
  end
116
141
 
117
- #look up a word and get the rank of a uri with $host
142
+ #return the top rank number from @ranks with the input host
118
143
  def rank(host)#on base of ranks
119
- ranks.each_with_index do |uri,index|
120
- next if uri.nil?
121
- return index+1 if uri.split('/')[0].strip == host
122
- #return index+1 if URI.parse(URI.encode(uri)).host == host
144
+ ranks.each do |id,line|
145
+ if host.class == Regexp
146
+ return id if line['host'] =~ host
147
+ elsif host.class == String
148
+ return id if line['host'] == host
149
+ end
123
150
  end
124
151
  return nil
125
152
  end
@@ -135,4 +162,4 @@ class BaiduResult
135
162
  def next
136
163
  @page = BaiduResult.new(Mechanize.new.click(@page.link_with(:text=>/下一页/))) unless @page.link_with(:text=>/下一页/).nil?
137
164
  end
138
- end
165
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baidu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: