Nokogiri HTML-разбор вопроса - PullRequest
       4

Nokogiri HTML-разбор вопроса

5 голосов
/ 09 августа 2010

Мне трудно понять, почему я не могу заставить ключевые слова правильно анализировать через nokogiri.В следующем примере у меня функционирует текстовая ссылка href, но я не могу понять, как использовать ключевые слова.

Это код, который у меня есть до сих пор:

.....

doc = Nokogiri::HTML(open("http://www.cnn.com"))
doc.xpath('//a/@href').each do |node|
#doc.xpath("//meta[@name='Keywords']").each do |node|

puts node.text

....

Это успешно отрисовывает всетекст href на странице, но когда я пытаюсь использовать его для ключевых слов, он ничего не показывает.Я попробовал несколько вариантов этого без удачи.Я предполагаю, что обратный вызов ".text" после узла неправильный, но я не уверен.

Приношу свои извинения за грубость этого кода, я прилагаю все усилия, чтобы узнать здесь.

1 Ответ

7 голосов
/ 09 августа 2010

Вы правы, проблема text.text возвращает текст между открывающим тегом и закрывающим тегом.Так как метатеги пусты, это дает вам пустую строку.Вместо этого вам нужно значение атрибута «content».

doc.xpath("//meta[@name='Keywords']/@content").each do |attr|
  puts attr.value
end

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

puts doc.xpath("//meta[@name='Keywords']/@content").first.value

Обратите внимание, что это приведет к ошибке, если нет метатега с именем «content», поэтому первый параметр может бытьпредпочтительнее.

...