使用Nokogiri和Ruby从html doc获取链接和href文本?

sun*_*eja 5 ruby nokogiri

我正在尝试使用nokogiri gem来提取页面上的所有URL以及它们的链接文本,并将链接文本和URL存储在哈希中.

<html>
    <body>
        <a href=#foo>Foo</a>
        <a href=#bar>Bar </a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想回来

{"Foo" => "#foo", "Bar" => "#bar"}
Run Code Online (Sandbox Code Playgroud)

Mar*_*mas 14

这是一个单行:

Hash[doc.xpath('//a[@href]').map {|link| [link.text.strip, link["href"]]}]

#=> {"Foo"=>"#foo", "Bar"=>"#bar"}
Run Code Online (Sandbox Code Playgroud)

分开一点可以说是更具可读性:

h = {}
doc.xpath('//a[@href]').each do |link|
  h[link.text.strip] = link['href']
end
puts h

#=> {"Foo"=>"#foo", "Bar"=>"#bar"}
Run Code Online (Sandbox Code Playgroud)