1

.value.rating-ineligibleクラスの両方が混在している Web サイトからデータをスクレイピングしようとしています。

が利用可能かどうかを確認するために、単一の配列で両方.valueを追跡したい:.rating-ineligible.value

page.css('td.title .value').text.strip
page.css('.rating-ineligible').text.strip

が存在する場合、出力が次のように表示される場合は、が存在する場合にFLAG[]要素が設定された、という名前の配列が必要です。"A".value"NA".rating-ineligible

FLAG["A","A","A","NA","A","NA","A","A"]

FLAG配列を機能させるハックはありますか?


サンプル入力:

<td class=title>

<span class="rating-rating">
<span class="value">8.7</span>
</span>

<div class="rating-ineligible">
<a href="somelink">NYR</a>
</div>

<span class="rating-rating">
<span class="value">5.2</span>
</span>

<span class="rating-rating">
<span class="value">6.1</span>
</span>

<span class="rating-rating">
<span class="value">7.9</span>
</span>

<div class="rating-ineligible">
<a href="somelink">NYR</a>
</div>

<span class="rating-rating">
<span class="value">-</span>
</span>

<span class="rating-rating">
<span class="value">4.2</span>
</span>

</td>

上記のサンプル入力が表示された場合、3 種類の値が存在します。

1 つは評価です: *.*
2 番目は : NYR
3 つ目は : - (ハイフン)

これらを単一の配列にキャプチャしたいのですが、

有効なレーティングがxxの形式で存在する場合、値は「A」として設定する必要があります。

入力に存在する値がNYRの場合、値は「NA」として設定する必要があります。

ハイフン記号-が入力に存在する場合は"-"

望ましい出力:

フラグ ["A","NA","A","A","A","NA","-","A"]

フラグを設定する代わりに、値を以下の配列にキャプチャして疲れさせました。

r = page.css('td.title span.value').text.strip
noe=["NOE"]
ra=r.scan(/./)
ra.map!{|x| x=='-'?noe:x}.flatten!
rat=ra.join("")
rati=rat.scan(/.../)    

そして、配列 rati[] の出力は以下のようになります。

比率 ["8.7","5.2","6.1","7.9","NOE","4.2"]

しかし、ここでの問題は、指定された入力に合計 8 つの値が存在し、そのうち 5 つの値が xx の形式である 1 つの値が '-' の形式であり、配列で NOE としてキャプチャされますが、私はできませんその配列でNYRをキャプチャします。

上記の入力の望ましい出力は、rati ["8.7","NYR","5.2","6.1","7.9","NYR","NOE","4.2"] のようになりますが、わかりません正確な方法、NYR 値を配列に取り込む方法。

誰でもこれを行うための正しいコードを教えてもらえますか?

前もって感謝します。

4

1 に答える 1