2015-05-21 4 views
0
require 'nokogiri' 
require 'open-uri' 

1.upto(10) do |x| 
url = TOPSECRET 
page = Nokogiri::HTML(open(url)) 

title = page.xpath('//span[@class="tit"][#{x}]').inner_html 

puts "#{x}, #{title}" 
end 

ошибка возникает [# {х}] < = здесьс помощью переменной в XPath на рубин с nokogiri

, как я могу это исправить?

+2

Когда вы используете строчную интерполяцию, вам придется использовать кавычки вместо одиночных кавычек. – newmediafreak

+1

Что такое «ошибка»? Было бы трудно помочь, когда мы не знаем, что случилось. – lcguida

ответ

1

Проблема заключается в использовании одиночных кавычек вместо двойных кавычек.

изменить это:

title = page.xpath('//span[@class="tit"][#{x}]').inner_html 

к этому:

title = page.xpath("//span[@class=\"tit\"][#{x}]").inner_html 

для надлежащего расширения переменной. Также обратите внимание на экранирование внутренних двойных кавычек.

+0

Спасибо, но почему вы положили двойной \? – ZHH

+0

В строке с двойными кавычками необходимо удвоить внутренние двойные кавычки или они будут считаться терминатором. 'irb> string =" testing "=>" testing "' 'irb> string =" \ "testing \" "=>" "testing" " –

+0

Вы мужчина. Спасибо! – ZHH