Module: DuckDuckGo

Defined in:
lib/duckduckgo/result.rb,
lib/duckduckgo/search.rb,
lib/duckduckgo/version.rb

Defined Under Namespace

Classes: SearchResult

Constant Summary collapse

RESOURCE_URL =
'https://duckduckgo.com/html/?q='
VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.search(query) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/duckduckgo/search.rb', line 9

def self.search(query)
  results = []

  html = open("#{RESOURCE_URL}#{CGI::escape(query)}")
  document = Nokogiri::HTML(html)

  document.css('.result').each do |result|
    title_element = result.css('.result__a').first
    raise 'Could not find result link element!' if title_element.nil?

    title = title_element.text
    raise 'Could not find result title!' if title.nil?

    uri = title_element['href']
    raise 'Could not find result URL!' if uri.nil?

    description_element = result.css('.result__snippet').first
    raise 'Could not find result description element!' if description_element.nil?

    description = description_element.text
    raise 'Could not find result description!' if description.nil?

    results << SearchResult.new(uri, title, description)
  end

  return results
end