如何使用Nokogiri解析和抓取URL的元标签



我正在使用Nokogiri来提取<h1><title>标签,但我很难买到这些:

<meta name="description" content="I design and develop websites and applications.">
<meta name="keywords" content="web designer,web developer">

我有这个代码:

url = 'https://en.wikipedia.org/wiki/Emma_Watson' 
page = Nokogiri::HTML(open(url))
puts page.css('title')[0].text puts page.css('h1')[0].text
puts page.css('description')
puts META DESCRIPTION
puts META KEYWORDS

我查了一下文件,什么也没找到。我会使用regex来执行此操作吗?

谢谢。

以下是我的操作方法:

require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<meta name="description" content="I design and develop websites and applications.">
<meta name="keywords" content="web designer,web developer">
EOT
contents = %w[description keywords].map { |name|
  doc.at("meta[name='#{name}']")['content']
}
contents # => ["I design and develop websites and applications.", "web designer,web developer"]

或者:

contents = doc.search("meta[name='description'], meta[name='keywords']").map { |n| 
  n['content'] 
}
contents # => ["I design and develop websites and applications.", "web designer,web developer"]

这将是:

page.at('meta[name="keywords"]')['content']

另一个解决方案:您可以使用XPath或CSS。

puts page.xpath('/html/head/meta[@name="description"]/@content').to_s
puts page.xpath('/html/head/meta[@name="keywords"]/@content').to_s

最新更新