0
我有一个嵌套在其他元素(div和span)下的元素(span)的基本页面结构。下面是一个例子:Nokogiri HTML嵌套元素提取类和文本
html = "<html>
<body>
<div class="item">
<div class="profile">
<span class="itemize">
<div class="r12321">Plains</div>
<div class="as124223">Trains</div>
<div class="qwss12311232">Automobiles</div>
</div>
<div class="profile">
<span class="itemize">
<div class="lknoijojkljl98799999">Love</div>
<div class="vssdfsd0809809">First</div>
<div class="awefsaf98098">Sight</div>
</div>
</div>
</body>
</html>"
请注意,类名是随机的。还要注意html中有空格和制表符。
我想提取的儿童和像这样的哈希结束:
page = Nokogiri::HTML(html)
itemhash = Hash.new
page.css('div.item div.profile span').map do |divs|
children = divs.children
children.each do |child|
itemhash[child['class']] = child.text
end
end
结果应该是相似的:
{\"r12321\"=>\"Plains\", \"as124223\"=>\"Trains\", \"qwss12311232\"=>\"Automobiles\", \"lknoijojkljl98799999\"=>\"Love\", \"vssdfsd0809809\"=>\"First\", \"awefsaf98098\"=>\"Sight\"}
但我结束了如同一盘散沙这个:
{nil=>\"\\n\\t\\t\\t\\t\\t\\t\", \"r12321\"=>\"Plains\", nil=>\" \", \"as124223\"=>\"Trains\", \"qwss12311232\"=>\"Automobiles\", nil=>\"\\n\\t\\t\\t\\t\\t\\t\", \"lknoijojkljl98799999\"=>\"Love\", nil=>\" \", \"vssdfsd0809809\"=>\"First\", \"awefsaf98098\"=>\"Sight\"}
这是因为HTML中的制表符和空格。我对HTML的生成方式没有任何控制,所以我试图解决这个问题。我试过noblanks,但那不起作用。我也尝试过gsub,但这只会破坏我的标记。
如何在干净地忽略空格和制表符的情况下提取这些嵌套元素的类和值?
P.S.我没有挂在Nokogiri - 所以如果另一颗宝石可以做得更好,我就是游戏。