.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 値を配列に取り込む方法。
誰でもこれを行うための正しいコードを教えてもらえますか?
前もって感謝します。