Nokogiri 替换任意节点
Nokogiri replace arbitrary nodes
我正在尝试删除一些立法。这是代码的摘录:
<h5>
<span class="expanderComparator clickable"> </span>
<span class="context-menu"> </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,这似乎很合适。但问题是:
这一段<sup><a href="#fn-#a340-1">1</a></sup>
需要换成space(" ") => h1 = @doc.at_xpath "//sup/a" h1.content = " "
需要删除所有 span
和 a
标签
最终,只保留 h5
标签内的内容(因为还有其他不需要的膨胀)=> .css("h5").text
我基本上能够达到以上所有目的,但不知何故我无法将它们链接到一个逻辑软件中。
如有任何帮助,我们将不胜感激!
注意:它只需要是纯 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。
我正在尝试删除一些立法。这是代码的摘录:
<h5>
<span class="expanderComparator clickable"> </span>
<span class="context-menu"> </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,这似乎很合适。但问题是:
这一段
<sup><a href="#fn-#a340-1">1</a></sup>
需要换成space(" ") =>h1 = @doc.at_xpath "//sup/a" h1.content = " "
需要删除所有
span
和a
标签最终,只保留
h5
标签内的内容(因为还有其他不需要的膨胀)=>.css("h5").text
我基本上能够达到以上所有目的,但不知何故我无法将它们链接到一个逻辑软件中。
如有任何帮助,我们将不胜感激!
注意:它只需要是纯 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。