我想建立一个简单的网站,可以下载一个网页www.example.com/index.html
及其快照存储在服务器当客户端请求的。 我正在考虑使用命令wget
下载网页。 将Ruby on Rails的能够处理这个任务?
Answer 1:
是。
您可以执行在Ruby中通过反引号,exec和系统shell命令 。 需要注意的是每一个返回的东西稍有不同:
反引号
wget http://www.yahoo.com
exec
:exec('wget http://www.yahoo.com')
system
:system('wget http://www.yahoo.com')
本博客文章似乎是同样的你要怎样做。
此外,也有这样几个了不起的Ruby库:
- 机械化与机械化下载 -看看这个railscast
- httparty -围绕一个简单的包装更难以利用HTTP库 。 一旦你得到的回应的身体,你需要将它保存到数据库或文件。
- 百头巨怪 -简单的机构,能制作并行的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