2

Ruby と Nokogiri を使用して HTML ソースを解析し、次の形式の認識可能なパターンでアイテムをリストします。

<span class="x">junk</span>
<small class="y">ParameterA</small>
<span class="z">
    <b>ParameterB</b>
    <i>Possible ParameterC</i>
</span>
<script type="text/javascript">useless stuff</script>
<object><noscript>other useless stuff</noscript></object>

<span class="x">junk</span>
<small class="y">ParameterA</small>
<span class="z">
    <b>ParameterB</b>
    <i>Possible ParameterC</i>
</span>
<script type="text/javascript">useless stuff</script>
<object><noscript>other useless stuff</noscript></object>

などを何度も。

次の構造で必要なパラメーターを使用して多次元配列を作成するにはどうすればよいですか?

myarray = []
mystuff = Struct.new(:ParameterA, :ParameterB, :ParameterC)

ここで実行できるループの種類と、役に立たないものの解析を回避する方法を見つけることができません。

4

2 に答える 2

1

出力として正しい多次元配列を提供する正規表現でこれを解決できました。

[["ParameterA", "ParameterB", "Possible ParameterC"], ["ParameterA", "ParameterB", "Possible ParameterC"]]

作業コード:

str = <<EOF
<span class="x">junk</span>
<small class="y">ParameterA</small>
<span class="z">
<b>ParameterB</b>
    <i>Possible ParameterC</i>
</span>
<script type="text/javascript">useless stuff</script>
<object><noscript>other useless stuff</noscript></object>

<span class="x">junk</span>
<small class="y">ParameterA</small>
<span class="z">
    <b>ParameterB</b>
    <i>Possible ParameterC</i>
</span>
<script type="text/javascript">useless stuff</script>
<object><noscript>other useless stuff</noscript></object>
EOF

m = str.scan(/<small [^>]+>([^<]+)<.*?<b>([^<]+)<\/b>\s+<i>([^<]+)<\/i>/m)
puts m.inspect
于 2012-09-08T05:42:26.403 に答える