Sequential solution
First of all, let's have a look at how we would like to use the solution once it is built. Also, let's have a look at exactly which output we expect from the solution:
val target = new URL("http://mvnrepository.com/") val res = fetchToDepth(target, 1) println(res.take(10).mkString("\n")) println(res.size)
In the preceding code, we perform the following things. First of all, we would like to be able to define our URL in terms of a Java-native URL object. In this example, we are using the Maven repository website as a crawling target. mvnrepository.com is a website that provides an easy search through all of the Maven packages.
After that, we have a call to fetchToDepth
. This is the method that is supposed to do the actual work for us and actually crawls the website for links. As a first argument, we supply it a URL we want to process. As the second argument, we supply it the depth to which you want to search the graph.
The idea behind having the depth is to avoid infinite...