Ruby Nokogiri在列表中解析多个元素

时间:2014-07-22 16:32:29

标签: ruby parsing xpath nokogiri

<div class='prdlist'>
 <ul>
  <li class='first'>
   <a href="some url 1">
    <div class="text>
     <br>product number 1
    </div>
   </a>
  </li>
  <li class='second'>
   <a href="some url 2">
    <div class="text">
     <br>product number 2
    </div>
   </a>
  </li>
</ul>
</div>

使用上面的例子,

我想解析每个列表中的值,按列表列出。类似的东西:

html.xpath("//*[@class='prdlist']/ul/li'").each do |each|
 url = each.xpath/css (parse the href from each list)
 name = each.xpath/css (parse the text from each list)
end
arr << [url,name]

最终会输出:

arr = [["some url 1","product number1"],["some url2","product number2"]]

我目前正在使用正则表达式&amp; xpath(&#34; // * [@ href] / @ href)获取所有网址和类似内容以获取所有产品名称,然后使用.zip将数组放在一起......但我遇到了一个html我希望按列表列出..

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你有它。

arr = []

html.css("div.prdlist li").each do |me|
    url  = me.css("a").map{|link| link['href']}[0]

    name = me.text.delete("\n").split.join(" ")
    arr << [url,name]

end