如何使用 Nokogiri 从 HTML head 获取规范链接

Daw*_*son 2 html ruby nokogiri

我正在尝试使用 Nokogiri 从网页获取定义的规范链接:

<link rel="canonical" href="https://test.com/somepage">
Run Code Online (Sandbox Code Playgroud)

这就是href我所追求的

无论我尝试什么似乎都不起作用。这就是我所拥有的:

page = Nokogiri::HTML.parse(browser.html)

canon = page.xpath('//canonical/@href')
puts canon 
Run Code Online (Sandbox Code Playgroud)

这不会返回任何内容,甚至不会返回错误。

Saš*_*vić 8

您正在尝试获取该属性,但这不是您的做法。

你可以使用这个:

page.xpath('//link[@rel="canonical"]/@href')
Run Code Online (Sandbox Code Playgroud)

它的意思是:在文档中的任何位置为我提供一个具有 rel等于属性的链接元素"canonical",当您找到该节点时,为我提供它的href 属性。

完整答案是:

page = Nokogiri::HTML.parse(browser.html)

canon = page.xpath('//link[@rel="canonical"]/@href')
puts canon 
Run Code Online (Sandbox Code Playgroud)

您试图做的是获取一个称为“规范”的节点,而不是属性。