Guest User

Untitled

a guest
Jan 21st, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. module RSlow
  2. class HtmlResource < ParsableResource
  3. attr_accessor :doc, :scripts, :stylesheets, :images
  4.  
  5. def initialize(url)
  6. super
  7. @doc = Nokogiri::HTML(@contents)
  8. @scripts = fetch_script_resources(".//script", 'src', JsResource)
  9. @stylesheets = fetch_stylesheet_resources(".//link[@rel]", 'href', CssResource)
  10. @images = fetch_image_resources(".//img", 'src', Resource)
  11. end
  12.  
  13. private
  14.  
  15. def fetch_resources(xpath, url_attribute, klass)
  16. resources = []
  17. @doc.xpath(xpath).each do |elem|
  18. url = elem[url_attribute]
  19. res = klass.new(url, self) unless url.nil? || url.empty?
  20. resources << res
  21. @children << res
  22. end
  23. return resources
  24. end
  25. end
Add Comment
Please, Sign In to add comment