【发布时间】:2012-04-09 15:21:57
【问题描述】:
这个神奇的 Ruby 脚本从网站下载几个 XML 文件,但这些文件没有扩展名。我想为它下载的每个文件添加前缀.xml。
这就是我现在的位置,它不会工作:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
URL = 'localhost'
extension = '.xml'
Nokogiri::HTML(open(URL)).xpath("//a/@href").each do |src|
src = File.join(extension).last
File.open(File.basename(src),'wb') do |f|
f.write(open(src).read)
end
puts "Done with: #{URL}"
end
关于如何完成这项工作的任何想法?
【问题讨论】:
-
我假设您的意思是 extension,而不是 prefix,我已经更新了您的问题以反映这一点。
-
@AndrewMarshall,是的,谢谢伙计。前缀是添加到开头的单词部分。
-
作为对使用上述代码的任何人的警告;正如所写,它有可能多次检索相同的 URL,浪费时间和带宽。一个页面通常有多个指向站点上其他页面的链接,并且每个链接都将在代码循环通过
<a>标记时被访问。因为 OPs 要求是针对页面中列出的 XML 文件,所以可能会避免该问题,但代码的其他用途可能不会那么幸运。添加一个set来跟踪之前检索到的 URL,或者先扫描页面中的 URL 并将它们存储在集合中,然后对其进行迭代。 -
@theTinMan 是的,代码有点懒。