如何在Ruby中动态创建2D数组?

时间:2012-04-18 20:22:55

标签: ruby nokogiri

所以我正在解析一个URL,想要使用Nokogiri获取页面中所有链接的列表。

但我想把结果推回到一个二维数组中。

我现在正在这样做:

def my_list(url)
    root = Nokogiri::HTML(open(url))
    list = []

    root.css("a").each do |link|
        list << (link[:href])           
    end

end

这给了我一些http链接。如果我list << link,它会为我提供完整的<a>代码。

我想要做的只是推送链接的文本(可以使用link.text)来说list[0][0],然后将href值(使用link[:href])推送到另一个单元格说list[0][1]

我该怎么做?

感谢。

2 个答案:

答案 0 :(得分:5)

def my_list(url)
  root = Nokogiri::HTML(open(url))
  root.css("a").map do |link|
    [link.text, link[:href]]           
  end
end

答案 1 :(得分:4)

def my_list(url)
    root = Nokogiri::HTML(open(url))
    list = []

    root.css("a").each do |link|
        list << [link.text,link[:href]]           
    end

end