class Gofundme::Search
Attributes
pages[RW]
results[RW]
Public Class Methods
new(query)
click to toggle source
# File lib/gofundme/search.rb, line 9 def initialize(query) @results = 0 @pages = 0 @query = query STDERR.puts "Sleeping #{Gofundme::GOOD_CITIZEN_DELAY} seconds" if Gofundme::DEBUG sleep Gofundme::GOOD_CITIZEN_DELAY url = "https://www.gofundme.com/mvc.php?route=category&term=\"#{CGI.escape(@query)}\"" STDERR.puts "Gofundme::Search::initialize(): Fetching: #{url}" if Gofundme::DEBUG page = RestClient.get url nok = Nokogiri::HTML(page) nok.xpath("//h2").each do |h2| if h2.inner_text.strip =~ /(\d+) results found/ @results = $1.to_i end end # Site does not return more results than the first 1000 projects if @results > 1000 @results = 1000 end @pages = (@results / 9.0).ceil.to_i end
Public Instance Methods
fetch_results(page_number)
click to toggle source
# File lib/gofundme/search.rb, line 33 def fetch_results(page_number) STDERR.puts "Gofundme::Search::results(): Sleeping #{Gofundme::GOOD_CITIZEN_DELAY} seconds" if Gofundme::DEBUG sleep Gofundme::GOOD_CITIZEN_DELAY url = "https://www.gofundme.com/mvc.php?route=homepage_norma/load_more&page=#{page_number}&term=\"#{CGI.escape(@query)}\"&country=&postalCode=&locationText=" STDERR.puts "Gofundme::Search::results(): Fetching: #{url}" if Gofundme::DEBUG page = RestClient.get url nok = Nokogiri::HTML(page) links = [] nok.xpath("//div[@class='fund-item']/a").each do |a| links.push a.attr('href') end return links end