Я ищу лучший способ решения следующей проблемы структуры / логики в Ruby:
Необходимо полностью отсканировать веб-сайт, собирая заголовок каждой страницы.
Но:
- Древовидная структура сайта неизвестна (сколько «уровней», «веток» и т. Д.)
- Код должен быть "СУХИМ" (= "Не повторяйся")
Следующий (упрощенный) пример, конечно, был бы совершенно глупым:
url = some_root_url
@title_collection = Array.new
go_to_page(url)
@title_collection << find_all_titles_on_page
urls = find_all_urls_on_page
urls.each do |url|
go_to_page(url)
@title_collection << find_all_titles_on_page
urls = find_all_urls_on_page
urls.each do |url|
go_to_page(url)
@title_collection << find_all_titles_on_page
urls = find_all_urls_on_page
urls.each do |url|
go_to_page(url)
@title_collection << find_all_titles_on_page
urls = find_all_urls_on_page
urls.each do |url|
go_to_page(url)
@title_collection << find_all_titles_on_page
urls = find_all_urls_on_page
urls.each do |url|
go_to_page(url)
@title_collection << find_all_titles_on_page
urls = find_all_urls_on_page
[...]
end
end
end
end
end
Так как бы вы достигли этого гибко и эффективно, "СУХО"?
Большое спасибо!
Tom