Scala web scraper exercise with evolving extraction rules and ruleset snapshots