class Scraper::Codecademy
Public Class Methods
new(*courses, email:, password:)
click to toggle source
# File lib/devscrape.rb, line 8 def initialize(*courses, email:, password:) @agent = Mechanize.new @email = email @password = password @courses = courses end
Public Instance Methods
access_site()
click to toggle source
# File lib/devscrape.rb, line 15 def access_site @agent.get('https://www.codecademy.com/login') end
filter_links()
click to toggle source
# File lib/devscrape.rb, line 32 def filter_links @links = @agent.page.links.select { |link| link.href[/learn/]} end
get_course_completion_percentage()
click to toggle source
# File lib/devscrape.rb, line 52 def get_course_completion_percentage access_site sign_in get_links filter_links match_link_to_courses end
get_links()
click to toggle source
# File lib/devscrape.rb, line 28 def get_links @agent.page.links_with(href: %r{^/learn/\w+} ) end
match_link_to_courses()
click to toggle source
# File lib/devscrape.rb, line 36 def match_link_to_courses course_hash = {} @links.each do |link_text| @courses.each do |course| if (link_text.to_s.include?(course)) && (link_text.to_s =~ /\d+/) course_hash[course] = link_text.to_s.scan(/\d+/).last end end end course_hash end
sign_in()
click to toggle source
# File lib/devscrape.rb, line 19 def sign_in form = @agent.page.forms.first form["user[login]"] = @email form["user[password]"] = @password form.submit end