使用URL作为Ruby中的文件名保存HTML文件

时间:2014-06-07 00:45:15

标签: html ruby parsing

我目前正在寻找一种访问URL的方法,将数据保存为.html文件,并根据URL命名文件。目前,我有一个.text文件,每行都是一个单独的URL:

http://www.url.com
http://www.url1.com
...

我目前的代码只是将每个.html文件保存为数字,但如果可能的话,我想使用URL本身的名称。

require 'open-uri'

n = 0

open ("urllist.txt"){|o|
    while url = o.gets
        url.chomp!
        printf("URL: %s", url)
        open(url) {|site|
            fname = sprintf("html/%d.html", n)
            open(fname, "w"){|out|
                d=site.read
                out.write(d)
            }
        }
        n += 1
    end 
}

也许使用IO.readlines的选项?我不确定。 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用URI.parse(url).path获取给定完整网址的文件路径,然后使用File.basename(path)获取文件本身的名称。

require 'open-uri'
require 'uri'

n = 0

open ("urllist.txt"){|o|
    while url = o.gets
        url.chomp!
        printf("URL: %s", url)
        open(url) {|site|
            path = URI.parse(url).path
            fname = "html/#{File.basename(path)}"
            open(fname, "w"){|out|
                d=site.read
                out.write(d)
            }
        }
        n += 1
    end 
}