通过Ruby中的fetched链接检查远程文件大小

时间:2013-10-15 11:37:18

标签: ruby-on-rails ruby mechanize ruby-2.0

我想知道是否有办法检查你有链接的文件的大小?

我已经从一个站点提取了一个图像的路径(带有机械化),并且希望根据文件大小在其上设置一个变为true或false的条件。

page = Mechanize.new.get(http://www.someurl.com/).parser
image = page.search('//img[@id="img1"]/@src').text

现在,我要做的是检查image的文件大小。 对于本地文件,我可以执行File.size之类的操作来获取其大小(以字节为单位)。有没有办法检查image的大小?

1 个答案:

答案 0 :(得分:6)

我认为Mechanize#head method会起作用:

image_size = Mechanize.new.head( image_url )["content-length"].to_i

HTTP HEAD请求是一个鲜为人知的HTTP GET表兄弟,其中服务器应该使用与执行GET请求相同的标头进行响应,但不包括正文。它经常用于网络缓存。

More on HTTP HEAD

取自手机/ eBay的例子(Arup Rakshit要求)

start_url = 'http://www.ebay.in/sch/Mobile-Phones-/15032/i.html'
crawler = Mechanize.new
page = crawler.get( start_url ).parser
image_url = page.search('//img/@src').first.text
image_size = crawler.head( image_url )["content-length"].to_i
 => 4244