通过Ruby on Rails的使用wget(Using wget via Ruby on Rail

2019-08-01 06:42发布

我想建立一个简单的网站,可以下载一个网页www.example.com/index.html及其快照存储在服务器当客户端请求的。 我正在考虑使用命令wget下载网页。 将Ruby on Rails的能够处理这个任务?

Answer 1:

是。

您可以执行在Ruby中通过反引号,exec和系统shell命令 。 需要注意的是每一个返回的东西稍有不同:

  1. 反引号

     wget http://www.yahoo.com 
  2. exec

     exec('wget http://www.yahoo.com') 
  3. system

     system('wget http://www.yahoo.com') 

本博客文章似乎是同样的你要怎样做。

此外,也有这样几个了不起的Ruby库:

  1. 机械化与机械化下载 -看看这个railscast
  2. httparty -围绕一个简单的包装更难以利用HTTP库 。 一旦你得到的回应的身体,你需要将它保存到数据库或文件。
  3. 百头巨怪 -简单的机构,能制作并行的http请求,如果你需要这样的能力

他们将提供一个更好的清洁Ruby接口用于处理与来自各种请求回数据。


测试所有这些选项的最好方法是使用Rails的控制台。 转到您的Rails应用程序和类型的根目录:

rails c

一旦在控制台中,你可以模拟实际的服务器调用。

运行wget在控制台将删除的文件在你的Rails根目录,这是不是你想要的。 tmp是这样的事情一个标准的目录。 可以动态地生成基于像这样的URL路径:

# tmp directory
path = Rails.root.join('tmp')
# create sub-directory as md5 hash based on URL
sub_dir = Digest::MD5.hexdigest(url)
# append sub_dir on the path
destination_path = path.join(sub_dir) 
system("wget -P #{destination_path} #{url}")

一定要还包括从选择这个职位



文章来源: Using wget via Ruby on Rails