2014-11-01 66 views
0

此API提供来自网站的缩略图。如何从这个网址获取jpg?

<img style="-webkit-user-select: none" src="http://webthumb.bluga.net/easythumb.php?user=00000&url=www.consumerreports.com&hash=sdf9g879d8f7g9sd8fg7s9df&size=medium&cache=30"> 

的用户ID和散列值已经删节,但如果他们是正确的,这个标签会导致网页上的小缩略图叫easythumb.jpeg

有没有办法抓住缩略图并将其存储在我的数据库或AWS中?

或者是webthumb精心设计,以防止这种行为?

编辑:

尝试引入nokogiri每下面的建议,而这里的回报。它看起来像没有办法得到一个JPG。我对吗?

+0

可能重复? http://stackoverflow.com/questions/1074309/how-do-i-download-a-picture-using-ruby – 2014-11-01 02:44:10

+0

不 - 那个问题在url中有一个jpg - 我的没有。 – dwilbank 2014-11-01 02:59:57

+0

啊。检查了这一点:http://stackoverflow.com/questions/7926675/save-all-image-files-from-a-website - 最佳答案建议使用Nokogiri,我也用于抓取/下载 – 2014-11-01 03:05:31

回答

2

明白了什么东西做什么是很重要的。以下是一些代码,已经过测试,可以下载图像:

require 'nokogiri' 
require 'open-uri' 

html = '<img style="-webkit-user-select: none" src="http://webthumb.bluga.net/easythumb.php?user=00000&url=www.consumerreports.com&hash=sdf9g879d8f7g9sd8fg7s9df&size=medium&cache=30">' 
doc = Nokogiri::HTML(html) 

uri = URI.parse(doc.at('img')['src']) 
# => #<URI::HTTP:0x007f8e13258520 URL:http://webthumb.bluga.net/easythumb.php?user=00000&url=www.consumerreports.com&hash=sdf9g879d8f7g9sd8fg7s9df&size=medium&cache=30> 

File.basename(uri.path) 
# => "easythumb.php" 

File.open(File.basename("#{ uri.path }.jpeg"), 'wb') { |fo| fo.write(open(uri).read) } 

这就是说,URL无效。打开浏览器页面并粘贴该URL会返回“Bad Hash”,而不是图像。