我正在阅读使用 ruby 构建域爬虫方法的人的代码。我是递归概念的新手,无法理解如何阅读他们的代码。
代码:
def crawl_domain(url, page_limit = 100)
return if @already_visited.size == page_limit # [1]
url_object = open_url(url)
return if url_object == nil # [2]
parsed_url = parse_url(url_object)
return if parsed_url == nil # [3]
@already_visited[url]=true if @already_visited[url] == nil
page_urls = find_urls_on_page(parsed_url, url)
page_urls.each do |page_url|
if urls_on_same_domain?(url, page_url) and @already_visited[page_url] == nil
crawl_domain(page_url)
end
end
end
问题:
- 连续
return
语句的组合是什么意思? - 在第 [1] 行,如果 @already_visited 的大小与page_limit 不同,程序是否会跳出 crawl_domain 方法并跳过其余代码?
- 如果@already_visited 的大小与page_limit 相同,是否在设置后继续下一个return 语句
url_object = open_url(url)
提前感谢您的帮助!
资料来源: http ://www.skorks.com/2009/07/how-to-write-a-web-crawler-in-ruby/