2
我找實現在紅寶石下面的結構/邏輯問題的最佳途徑:紅寶石:如何寫一個「幹」 /動態/靈活的樹狀環結構
一個網站需要完全爬,收集每一頁的標題。
但是:
- 該網站的樹形結構是不知道(有多少「水平」,「分支機構」等)
- 的代碼應該是「幹」(=「不要重複自己「)
以下(簡體)例子當然是完全愚蠢:
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
那麼如何以「幹」的方式靈活高效地完成這項工作?
非常感謝!
湯姆
大 - 非常感謝! – TomDogg
還有一件事:如果我沒有弄錯,變量'urls'將在每個子循環中重新初始化,從而從其父循環中刪除'urls'。在這種情況下,必須有一種機制,使每個子循環的'urls'變量都是唯一的,即包含當前級別和當前分支的數量,如:urls_1_1,urls_1_2,urls_1_3/urls_2_1,urls_2_2 ,urls_2_3/etc,對吧? – TomDogg
url對於walk_tree的範圍是獨一無二的,也就是說每次調用都會重新初始化它。 –