我正在使用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
我查看了文档但没有找到任何内容。我会用正则表达式来做这件事吗?
感谢。
答案 0 :(得分:9)
以下是我如何去做的事情:
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"]
答案 1 :(得分:7)
那将是:
page.at('meta[name="keywords"]')['content']
答案 2 :(得分:2)
另一种解决方案:您可以使用XPath或CSS。
puts page.xpath('/html/head/meta[@name="description"]/@content').to_s
puts page.xpath('/html/head/meta[@name="keywords"]/@content').to_s