class CraigsList
Constants
- VALID_FIELDS
Public Instance Methods
search(options ={})
click to toggle source
# File lib/craigslist/craigslist.rb, line 9 def search(options ={}) if options[:title_only] options.merge!(srchType: "T") options.delete(:title_only) end uri = "http://#{options[:city]}.craigslist.org/search/sss?#{to_query(options)}" doc = Nokogiri::HTML(open(uri)) items = [] doc.css('p.row').each do |link| items << { data_id: link["data-pid"] , description: link.css("a").text, url: "http://#{options[:city]}.craigslist.org#{link.css("a")[0]["href"]}", price: extract_price(link.css("span.price").text) } end items end
us_cities()
click to toggle source
# File lib/craigslist/craigslist.rb, line 29 def us_cities doc = Nokogiri::HTML(open("http://www.craigslist.org/about/sites")) cities = [] doc.css('a').each do |link| if /http:\/\/([a-z]*).craigslist.org/ =~ link["href"] puts link["href"] end end end
Private Instance Methods
extract_price(dollar_string)
click to toggle source
# File lib/craigslist/craigslist.rb, line 43 def extract_price(dollar_string) dollar_string[1..-1] end
to_query(hsh)
click to toggle source
# File lib/craigslist/craigslist.rb, line 47 def to_query(hsh) hsh.select { |k,v| CraigsList::VALID_FIELDS.include? k }.map {|k, v| "#{k}=#{CGI::escape v}" }.join("&") end