class PetRescue::ListingPageParser
Parses an HTML listing page from petrescue.com.au
Public Instance Methods
parse(document)
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 7 def parse(document) @document = Nokogiri::HTML(document) Pet.new(name: pet_name, size: pet_size, gender: pet_gender, breed: pet_breed, age: pet_age, location: pet_location, vaccinated: pet_vaccinated?, desexed: pet_desexed?, biography: pet_biography, rescue_group: pet_rescue_group, small_photo_url: pet_small_photo_url, large_photo_url: pet_large_photo_url, adoption_fee: pet_adoption_fee, adoption_process: pet_adoption_process, contact_name: pet_contact_name, contact_number: pet_contact_number, rescued: pet_rescued?) end
pet_adoption_fee()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 65 def pet_adoption_fee @document.at_css("dd.adoption_fee").text.strip.gsub("$", "").to_i end
pet_adoption_process()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 69 def pet_adoption_process node = @document.at_css(".adoption_process") node && node.text.strip end
pet_age()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 45 def pet_age @document.at_css("dd.age").text.strip end
pet_biography()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 61 def pet_biography @document.at_css(".personality").text.strip end
pet_breed()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 41 def pet_breed species.split(" ").drop(2).join(" ") end
pet_contact_name()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 78 def pet_contact_name node = @document.at_css("dd.contact_name") node && node.text.strip end
pet_contact_number()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 83 def pet_contact_number node = @document.at_css("dt.contact_number") node &&= node.next_element.children.first node && node.text.strip end
pet_desexed?()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 57 def pet_desexed? @document.at_css("dd.desexed").text.strip == "Yes" end
pet_gender()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 37 def pet_gender species.split(" ")[1] end
pet_large_photo_url()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 93 def pet_large_photo_url photo_node && photo_node.at_css("a").attributes["href"].value end
pet_location()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 49 def pet_location @document.at_css(".located_in").text.strip.gsub("Located in ", "").strip end
pet_name()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 29 def pet_name @document.at_css("#main h1").text.strip end
pet_rescue_group()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 74 def pet_rescue_group @document.at_css("dd.fostered_by").text.strip end
pet_rescued?()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 97 def pet_rescued? !!@document.at_css(".adopt_this_pet_container .rehomed") end
pet_size()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 33 def pet_size species.split(" ")[0] end
pet_small_photo_url()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 89 def pet_small_photo_url photo_node && photo_node.at_css("img").attributes["src"].value end
pet_vaccinated?()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 53 def pet_vaccinated? @document.at_css("dd.vaccinated").text.strip == "Yes" end
Private Instance Methods
photo_node()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 103 def photo_node @document.at_css("#featured_photo") end
species()
click to toggle source
# File lib/pet_rescue/listing_page_parser.rb, line 107 def species @document.at_css(".species").text.strip end