【问题标题】:Check remote file size through fetched link in Ruby通过 Ruby 中的获取链接检查远程文件大小
【发布时间】:2013-10-23 04:50:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你可以把图片保存到本地,然后使用File.size方法就可以了。
  • 我知道,但在那种情况下,我不得不下载数千张图片。所以我正在寻找一种无需制作本地副本的方法。
  • 能给我网址吗?如果可能的话,我想检查一下吗?
  • 我不能给你原始网址,但任何一方的任何图像都应该可以正常工作。
  • 好的.. 我正在尝试使用此链接 - ebay.in/sch/Mobile-Phones-/15032/i.html .. 好问题。

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


【解决方案1】:

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

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

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

More on HTTP HEAD

来自 Mobile Phones/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

【讨论】:

  • 哇...请提供文档链接...使用我在评论中提供的网址提供完整的代码... :) 如果您愿意
  • 你得到了我的支持(+1)。
  • 正是我一直在寻找的。谢谢!
猜你喜欢
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2023-03-28
相关资源
最近更新 更多