2014-11-20 4 views
1

В настоящее время я пытаюсь скопировать данные с помощью Nokogiri с веб-страницы. До сих пор я был в состоянии успешно соскрести название и информацию о ценах, используя этот код в контроллере:Вывод данных Nokogiri на веб-страницу

@items = doc.xpath("//div[contains(@class, 'name')]/a").collect {|node| node.text.strip} 
@prices = doc.xpath("//div[contains(@class, 'price')]/span[contains(@class, 'price-new')]").collect {|node| node.text.strip} 

и этот код в представлении:

<% @items.zip(@prices).each do |title,price| %> 
<%= title+" "+price%> 
<% end %> 

Но этот код для изображений не будет Работа. (Обратите внимание, что я пытаюсь очистить <img> тега):

@images = doc.xpath("//div[contains(@class, 'image')]/a/img").collect 

Все, что я пытаюсь написать в виде .erb просто возвращается с синтаксической ошибкой. Любая идея, что мне не хватает или должна использоваться в .erb?

+0

Когда вы запрашиваете помощь в разборе HTML или XML, очень важно предоставить минимальный образец данных, чтобы продемонстрировать, с чем вы работаете. Без этого мы должны представить, о чем вы говорите, и это не принесло пользы. –

+0

Спасибо, я не был уверен, что включить. Я сделаю это с этого момента. –

ответ

1

Есть ли там опечатка? Это:

@images = doc.xpath("//div[contains(@class, 'image')]/a/img").collect 

Только что вернет Enumerator. Если это не опечатка, то ответ будет то, что вам нужно передать блок collect, может быть:

@images = doc.xpath("//div[contains(@class, 'image')]/a/img").collect { |element| element.attribute("src") } 

Это не ясно, что вы делаете дальше с @images, но это было бы получить вам адрес каждого изображения поэтому вы можете отображать их самостоятельно.

+0

Wow thankyou. Это удивительно удивило результат. Извините за второй вопрос, но знаете, что мне нужно сделать в .erb, чтобы он действительно появился на веб-странице? Я действительно застрял, потому что '<% @ items.zip (@prices) .each do | title, price | %> <% = title + "" + price%> <% end %> 'отлично работает для других предметов, но я не могу получить ничего похожего на работу с img. Извиняюсь, я очень младший в этом ... –

+0

Если он работает, тогда вы должны принять ответ! Для каждого изображения ('@images.each do | image_url | ') вы хотите добавить элемент HTML img с параметром src в URL (' '). Не нужно быть намного сложнее, чем это. –

Смежные вопросы