你想要的不是 Ruby 中的站点地图生成器,而是 Ruby 中的网络蜘蛛。我推荐海葵
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 所建议的,使用 aSet
而不是a 可能是一个更好的主意,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