你想要的是不是在Ruby 站點地圖生成器,但一個web蜘蛛在Ruby中。我建議Anemone
require 'anemone'
links = []
Anemone.crawl("http://www.foo.com/") do |anemone|
anemone.on_every_page do |page|
links << page.url
end
end
File.open('./link_list.txt', 'wb'){|f| f.write links.join("\n") }
這會產生一個名爲link_list.txt
與文件,內容如下:
http://www.foo.com/
http://www.foo.com/digimedia_privacy_policy.html
還有Wombat,Spidr,Pioneer等等。
編輯:正如@ChrisCummings暗示,它可能是一個更好的主意,以防止重複使用Set
而不是Array
。我還建議按字母順序排序的鏈接,這將使輸出文件更易於閱讀的人:
require 'anemone'
require 'set'
links = Set.new # Set will prevent duplicates
Anemone.crawl("http://www.foo.com/") do |anemone|
anemone.on_every_page do |page|
links << page.url.to_s # to_s needed in order to sort
end
end
File.open('./link_list.txt', 'wb') do |f|
f.write links.sort.join("\n") # call to sort added
end
這杯紳士兩杯茶! 這正是我所期待的。 非常感謝! –
不客氣;-) –
我會使用Set而不是Array作爲我的集合類,以避免重複的URL。 http://www.ruby-doc.org/stdlib-2.0.0/libdoc/set/rdoc/Set.html –