class Query::Result::SogouMobile

Public Instance Methods

ads_bottom() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 16
def ads_bottom
  @page.search("//div[@class='results']/div[@class='ec_ad_results'][2]/div[@class='ad_result']").map.with_index do |ad_div,index|
    parse_ad(ad_div).merge({:rank => (@pagenumber-1)*10 + index + 1})
  end
end
ads_right() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 12
def ads_right
  []
end
ads_top() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 6
def ads_top
  @page.search("//div[@class='results']/div[@class='ec_ad_results'][1]/div[@class='ad_result']").map.with_index do |ad_div,index|
    parse_ad(ad_div).merge({:rank => (@pagenumber-1)*10 + index + 1})
  end
end
count() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 36
def count
end
html() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 39
def html
  @page.to_html
end
next_url() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 28
def next_url
  "#{@baseuri.to_s}&p=#{@pagenumber+1}"
end
seo_ranks() click to toggle source
# File lib/query/result/sogou_mobile.rb, line 22
def seo_ranks
  @seo_rank ||= @page.search("//div[@class='results']/div[@class='result' or @class='vrResult']").map.with_index do |seo_div,index|
    parse_seo_ranks(seo_div).merge({:rank => (@pagenumber-1)*10 + index + 1})
  end
end

Private Instance Methods

parse_ad(ad_div) click to toggle source
# File lib/query/result/sogou_mobile.rb, line 44
def parse_ad(ad_div)
  begin
          site = ad_div.search(".//span[@class='exp_tip']/preceding-sibling::span")[0] || ad_div.search(".//div[@class='bd_citeurl']/text()")[0]
          {
          :text => ad_div.search('h3')[0].text.gsub(/ |\n|\t/,""),
          :href => ad_div.search('a')[0]['href'],
          :host => site.text.strip.downcase
          }
  rescue Exception => e
    warn "Error in parse_ads method : " + e.message
    {}
  end
end
parse_seo_ranks(seo_div) click to toggle source
# File lib/query/result/sogou_mobile.rb, line 58
def parse_seo_ranks(seo_div)
  begin
  a    = seo_div.search(".//a[contains(@href,'url=')]")[0]
  cite_url = URI.decode(CGI.parse(URI(URI.encode(a['href'])).query)['url'][0])
  
  if cite_url==""
    cite_url  = seo_div.search(".//div[@class='citeurl']/text()")[0] || "wap.sogou.com"
    cite_url  = "http://#{cite_url.to_s.gsub(/ |-/,'')}"
  end
  
  if seo_div['class']=='result'       
    is_vr, title = false, a.search("./text()|./em|./span")     
  else
    title     = seo_div.search(".//h3")[0] || a
    is_vr     = true
    title.css('script').remove
  end
          url       = a['href'][/wap.sogou.com\/web/].nil? ? "http://wap.sogou.com/web/#{a['href']}" : a['href'] 
          
    {
      :text   => title.text.gsub(/ |\n|\t/,""),
      :href   => url,
      :host   => URI(URI.encode(cite_url)).host,
      :is_vr  => is_vr
    }
  rescue Exception => e
    warn "Error in parse_seo method : " + e.message
    {}
  end
end