Я пытаюсь получить точный URL изображения внутри страницы и затем загрузить его.я еще не дошел до точки загрузки, так как пытаюсь выделить URL изображения.вот код:
#!/usr/bin/ruby -w
require 'rubygems'
require 'hpricot'
require 'open-uri'
raw = Hpricot(open("http://www.amazon.com/Weezer/dp/B000003TAW/"))
ele = raw.search("img[@src*=jpg]").first
img = ele.match("(\")(.*?)(\")").captures
puts img[1]
когда я запускаю его как есть, я получаю:
undefined method `match' for #<Hpricot::Elem:0xb731948c> (NoMethodError)
, если я закомментирую последние 2 строки и добавлю
puts ele
я получаю:
<img src="http://ecx.images-amazon.com/images/I/51rpVNqXmYL._SL500_AA240_.jpg" style="display:none;" />
, который является правильной частью страницы, которую я хочу проанализировать.однако ошибка возникает, когда я пытаюсь получить только "http://ecx.images -amazon.com / images / I / 51rpVNqXmYL._SL500_AA240_.jpg " style = "display: none;"part.
Я не совсем уверен, почему он не может выполнить сопоставление, так как я понимаю, что поиск, который я выполняю, должен получить массив элементов изображения и вернуть первый.поэтому я предположил, что не могу запустить сопоставление для всего массива, поэтому я попытался
img = ele[1].match("(\")(.*?)(\")").captures
puts img
, и это возвращает
undefined method `match' for nil:NilClass (NoMethodError)
Я потерян.прошу прощения за мое невежество, так как я только начинаю изучать рубин.любая помощь приветствуется.