我正在尝试从一个同时包含.value
和.rating-ineligible
类混合的网站上抓取数据。
我想在单个数组中跟踪两者.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>
如果您看到上述示例输入,则存在三种类型的值,
一是评分:*.* 第二个是:NYR 第三个是:-(连字符)
我希望这些被捕获在一个数组中,
如果以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(/.../)
数组 ratio[] 的输出如下所示,
比率 ["8.7","5.2","6.1","7.9","NOE","4.2"]
但这里的问题是,给定输入中共有 8 个值,其中 5 个值的格式为 xx 一个值的格式为“-”,在数组中被捕获为 NOE 但我无法在该阵列中捕获 NYR。
现在上述输入的期望输出应该是这样的,比率 ["8.7","NYR","5.2","6.1","7.9","NYR","NOE","4.2"] 但我不知道确切的方法,如何将 NYR 值捕获到数组中。
谁能给我正确的代码来做到这一点?
提前致谢。