2013-08-26 2 views
1

Я использую XPath, чтобы получить некоторые значения на веб-сайте, как этотВозврат только значение из XPath - Nokogiri Рубин

auction_page = Nokogiri::HTML open(a, "User-Agent" => theagent) 
auction_links = auction_page.xpath('//iframe[contains(@src, "near")]/@src') 

Который возвращает то, что мне нужно, как этот

#<Nokogiri::XML::Attr:0x3fcd7bef5730 name="src" value="http://thevalue.com"> 

Я просто хотите получить значение, а не значение или что-то еще. Как мне это сделать?

ответ

3

Я думаю, что вы ищете метод .text.

Таким образом, auction_links.text должен вернуть «http://thevalue.com».

Edit:

Если это не работает, попробуйте, auction_links.first который будет возвращать массив, я уверен, что ссылка будет там внутри. ;)

Для получения дополнительной справки, вот отличный учебник для basic Nokogiri Crawling/Parsing.

+1

Эй - достаточно интересная оба ответа работать, я буду принимать в течение 2 минут, когда я м разрешено. Тем не менее, - .first только будет работать для меня, если я удалю/@ src, а затем выберем его как 7-е значение в узле, который я не знаю, как это сделать. Это не .7 .7th или .seventh. Есть предположения? –

+0

.text - это то, что мне нужно, но –

+0

вы бы получили значение 'x'th из массива с' [] '-brackets. Примечание для подсчета 'x-1', поскольку массив начинает отсчет с 0. –

0

Вы можете сделать это, как показано ниже:

require 'nokogiri' 

doc = Nokogiri::HTML::Document.parse <<-end 
<a id = "foo" class="bar baz" href = "www.test.com"> click here </a> 
end 

doc.at_xpath("//a[contains(@class,'bar')]/@href").to_s 
# => "www.test.com" 

Так что в вашем случае вы можете написать:

auction_page.at_xpath('//iframe[contains(@src, "near")]/@src').to_s 
# => "http://thevalue.com" 
Смежные вопросы