class SearchEngine
Attributes
uri[RW]
Public Class Methods
new()
click to toggle source
# File lib/search_engine.rb, line 8 def initialize self.uri = "http://www.google.com/uds/GwebSearch?start=0"\ "&rsz=large&hl=en&key=notsupplied&v=1.0&" end
Public Instance Methods
build_url(query, page)
click to toggle source
# File lib/search_engine.rb, line 31 def build_url(query, page) start = (page - 1) * 8 self.uri.chomp! "&rsz=large&hl=en&key=notsupplied&v=1.0&" while self.uri[-1, 1] != "=" do self.uri.chop! end self.uri << "#{start}&rsz=large&hl=en&key=notsupplied&v=1.0&" query.strip! q_uri = URI.encode_www_form('q' => query) return self.uri + q_uri + "&filter=1" end
extract_fields(fields, hash_results)
click to toggle source
# File lib/search_engine.rb, line 48 def extract_fields(fields, hash_results) extracted_results = [] if fields.empty? raise "No fields given." else fields.each do |f| index = 0 hash_results.each do |hr| if hr.has_key?(f) extracted_results << hash_results[index][f] index += 1 end end end end return extracted_results end
get_result_count(query)
click to toggle source
# File lib/search_engine.rb, line 69 def get_result_count(query) cursor_hash = open_file(query) return cursor_hash[:responseData][:cursor][:resultCount] end
get_search_time(query)
click to toggle source
# File lib/search_engine.rb, line 75 def get_search_time(query) cursor_hash = open_file(query) return cursor_hash[:responseData][:cursor][:searchResultTime] end
search(query, *fields, pages: 1)
click to toggle source
# File lib/search_engine.rb, line 14 def search(query, *fields, pages: 1) results = [] raise "No query given" if query.empty? for i in 1..pages uri = build_url(query, i) file = open(uri) my_hash = JSON.parse(file.read, symbolize_names: true) raise "Page is out of bounds" unless !my_hash[:responseData].nil? hash_results = my_hash[:responseData][:results] results << extract_fields(fields, hash_results) end return results end