Ruby上的文本中的站点地图生成器

Ser*_*hin 3 ruby sitemap gem

我有一些网站,例如http://example.com
我想生成一个站点地图作为URI列表,例如:

  • http://example.com/main
  • http://example.com/tags
  • http://example.com/tags/foo
  • http://example.com/tags/bar

我找到了一个很好的应用程序:iGooMap
iGooMap可以生成所需的URI列表作为文本文件(而不是XML文件).
这是我想要实现的目标的直观表示:

这就是我想要的

我希望在Ruby(而不是 Rails)中生成这种类型的站点地图.
我找到了SiteMapGenerator,但它只生成一个.XML文件,但是如上所述,我需要一个文本文件.

是否有Ruby的解决方案为给定的站点创建链接列表?

Pat*_*ity 7

你想要的不是Ruby中的站点地图生成器,而是Ruby中的Web蜘蛛.我推荐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") }
Run Code Online (Sandbox Code Playgroud)

这将生成一个link_list.txt使用以下内容调用的文件:

http://www.foo.com/
http://www.foo.com/digimedia_privacy_policy.html
Run Code Online (Sandbox Code Playgroud)

还有Wombat,Spidr,Pioneer等等.


编辑:正如@ChrisCummings所建议的那样,最好使用a Set而不是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
Run Code Online (Sandbox Code Playgroud)