Nokogiri 替换任意节点

Nokogiri replace arbitrary nodes

我正在尝试删除一些立法。这是代码的摘录:

<h5>
<span class="expanderComparator clickable">&nbsp;</span>
<span class="context-menu">&nbsp;</span>
<a href="index.html#a340">
<strong>Art. 340</strong>
</a>
<sup>
<a href="#fn-#a340-1">1</a>
</sup>
<a href="index.html#a340">Mesures conservatoires</a>
</h5>

每篇文章(可能超过一千篇)都会重复这段代码,但其结构基本上遵循相同的模式。

我正在尝试构建这样的数组:

a340 = { 'number' => '340', 'title' => 'Mesures conservatoires'}

所以很明显我看了Nokogiri,这似乎很合适。但问题是:

我基本上能够达到以上所有目的,但不知何故我无法将它们链接到一个逻辑软件中。

如有任何帮助,我们将不胜感激!

注意:它只需要是纯 ruby,所以没有 rails :(

也许访问 '#lawcontent .collapseable h5' 可行:

require 'nokogiri'
require 'open-uri'

url = 'https://www.admin.ch/opc/fr/classified-compilation/20061121/index.html'
doc = Nokogiri.HTML(open url)
articles_hash = doc.css('#lawcontent .collapseable h5').map do |element|
  {
    'number' => element.css('a strong').text.sub(/\AArt. /, ''),
    'title'  => element.css('a:last-child').text.sub(/\AArt. \d+ |\A\d+/, '')
  }
end
puts articles_hash

# [
#  {"number"=>"1", "title"=>"Objet"}, 
#  {"number"=>"2", "title"=>"Causes de nature internationale"},
#  {"number"=>"3", "title"=>"Organisation des tribunaux et des autorit\u00E9s de conciliation"},
#  ...
# ]

这将迭代并获取到文章 #407。