我试图用诺科吉里和科安会的挑选者在鲁比拉撰写一篇文章。 不过,我对文字中的附加条件略感困惑。 这里,我迄今为止(page
是使用Nokogiri下载的html):
page.css( h3 ).each do |node|
puts node.text
end
page.css( li ).each do |node|
if /d|D/.match(node)
puts node.text.scan(/[d]+D*/).first
end
end
page.css( td b ).each do |node|
puts node.text
end
This all works fine. However, what I really want is something like this:
page.css( h3, li, td b ).each do |node|
# if it s an h3 node, do one thing
# if it s a li node, do another thing
# else if it s a td b node, do another thing
end
这将使该网页能够按顺序排列,而不是经过三场不同的时间。 然而,我不敢确定如何在我的发言稿中写这些条件。
EDIT: So now my script is
page.css( h3, li, td b ).each do |node|
case node.name
when h3 , b
puts node.text
when li
if /d|D/.match(node)
puts node.text.scan(/[d]+D*/).first
end
else
next
end
end
然而,它并没有改变行为。 它按照此前的顺序处理这些内容(所有三个要素,即所有利要素,即所有要素)。
EDIT 2:
奥凯,我最后去工作。 这里是我的最后一套条件:
page.traverse do |node|
case
when h3 == node.name
puts node.text
when li == node.name
puts node.text.scan(/[d]+D*/).first if /d|D/.match(node)
when b == node.name
puts node.text if (node.parent.name == p or node.parent.name == td )
end
end
感谢!