我无法访问此数组中的项目,我不确定原因。
我正在使用名为FastImage的Gem,它接受图像URL并返回其属性以抓取网页并返回其找到的所有图像的宽度和高度。
- url = open("http://google.com/").read
- imgs = URI.extract(url).select{|img| img[/\.(?:png|jpe?g)\b/]}.each do |img|
= FastImage.size(img)
这将打印每个相应数组中的维度,但尝试使用[]
的索引访问项目会返回上述错误。
答案 0 :(得分:1)
如果img
不是图片的有效网址,则FastImage.size(img)
会返回nil
; FastImage.size(img)[0]
会抛出错误。
如果您使用的是Ruby 2.3,则可以编写FastImage.size(img)&.[](0)
,但这很丑陋。对于任何Ruby,您都可以这样做:
= size = FastImage.size(img) and size[0]
在任何一种情况下,更好的正则表达式都应该减少误报,这应该减少不必要的HTTP请求。一个简单的事情可能是将\b
替换为$
,因为扩展名应该是URL中的最后一项(除非您有像foo.jpeg?q=276747622
这样的奇怪的缓存无效网址。)