Class: SearchLogger::GoogleParser::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/search_logger/google_parser/result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, position, searched_keyword) ⇒ Result

Returns a new instance of Result.



6
7
8
9
10
11
# File 'lib/search_logger/google_parser/result.rb', line 6

def initialize(node, position, searched_keyword)
  raise "No HTML node was specified" if node == false
  @position, @searched_keyword = position, searched_keyword
  @title, @url, @description = nil
  @node = node
end

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



4
5
6
# File 'lib/search_logger/google_parser/result.rb', line 4

def description
  @description
end

#positionObject

Returns the value of attribute position.



4
5
6
# File 'lib/search_logger/google_parser/result.rb', line 4

def position
  @position
end

#searched_keywordObject

Returns the value of attribute searched_keyword.



4
5
6
# File 'lib/search_logger/google_parser/result.rb', line 4

def searched_keyword
  @searched_keyword
end

#titleObject

Returns the value of attribute title.



4
5
6
# File 'lib/search_logger/google_parser/result.rb', line 4

def title
  @title
end

#urlObject

Returns the value of attribute url.



4
5
6
# File 'lib/search_logger/google_parser/result.rb', line 4

def url
  @url
end

Instance Method Details

#as_aryObject



19
20
21
22
23
24
25
26
# File 'lib/search_logger/google_parser/result.rb', line 19

def as_ary
  { title:            title,
    url:              url,
    description:      description,
    position:         position,
    searched_keyword: searched_keyword
  }
end

#parseObject



13
14
15
16
17
# File 'lib/search_logger/google_parser/result.rb', line 13

def parse
  parse_normal_result if @node[:id].nil? || @node[:id] =~ /mbb/
  parse_news_result   if @node[:id] == "newsbox"
  self
end

#parse_news_resultObject



36
37
38
39
40
41
42
43
44
# File 'lib/search_logger/google_parser/result.rb', line 36

def parse_news_result
  self.tap do |e|
    title_link    = @node.at_css('li.w0 span.tl a')
    description   = @node.at_css('li.w0 span[dir=ltr]')
    e.title       = sanitize_string title_link.content  unless title_link.nil?
    e.url         = sanitize_string title_link[:href]   unless title_link.nil?
    e.description = sanitize_string description.content unless description.nil?
  end
end

#parse_normal_resultObject



28
29
30
31
32
33
34
# File 'lib/search_logger/google_parser/result.rb', line 28

def parse_normal_result
  self.tap do |e|
    e.title       = sanitize_string @node.at_css('h3 a').content  unless @node.at_css('h3 a').nil?
    e.url         = sanitize_string @node.at_css('h3 a')[:href]   unless @node.at_css('h3 a').nil?
    e.description = sanitize_string @node.at_css('div.s').content unless @node.at_css('div.s').nil?
  end
end

#sanitize_string(string) ⇒ Object



46
47
48
49
50
51
# File 'lib/search_logger/google_parser/result.rb', line 46

def sanitize_string(string)
  string.gsub(/&/, "&")
        .gsub(/[\s]{1,99}/, " ")
        .strip
        .gsub(/\s\.\.\.[\s]{0,1}[w]{0,3}.*- Cached - Similar/, " ...")
end

#set_result(options = {}) ⇒ Object



53
54
55
56
57
# File 'lib/search_logger/google_parser/result.rb', line 53

def set_result(options = {})
  @title        = options[:title]
  @url          = options[:url]
  @description  = options[:description]
end