2016-03-19 4 views
-1

Im пытается получить цену в общем от всех торговых сайтовNOKOGIRI - Получить все элементы, которые содержат знак доллара

Что я пытался до сих пор:

  price = doc.xpath('//span[contains(text(), "$")]').try(:first).try(:content) 

      if (!price) 
       price = doc.xpath('//div[contains(text(), "$")]').try(:first).try(:content) 
      end 

Пример HTML-я попытался: https://jet.com/product/adidas-Real-Madrid-Ball-15-5/a08713c229924ceca7171850680d3e32 (HTML код этого сайта)

Это не работает так хорошо, что я делаю неправильно? Спасибо вам все

+0

Добро пожаловать в Stack Overflow. Прочтите «[ask]» и «[mcve]». Вам нужно предоставить минимальный пример HTML в вопросе. Что значит «это не так хорошо»? Ошибки? Неспособность получить какой-либо результат? Это сожгло атмосферу? –

ответ

0

Вы можете попробовать

Nokogiri: How to select nodes by matching text?

Я немного изменить, и она работала

require 'pp' 
require 'nokogiri' 

html = ' 
<html> 
<body> 
    <p>foo</p> 
    <p>$bar</p> 
</body> 
</html> 
' 

doc = Nokogiri::HTML(html) 
pp doc.at('p:contains("$")').text.strip 
+0

Эй, в первую очередь, спасибо. Проблема здесь в том, что я не знаю, какой элемент я ищу. в некоторых сайтах его может быть div в другом его может быть span. Что я могу сделать ? Спасибо –

+0

Spidering/scraping подразумевает глубокое знание страниц. Не существует универсального кода для одного размера, который может точно перемещать или очищать страницу. Другими словами, вам нужно будет выяснить, что искать. Вот почему программирование сложно, вам нужно выяснить, как сообщить компьютеру, что делать. –

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