2

これが非常に基本的な場合はご容赦ください。行の配列のヘッダーセルを含む各セルをトラバースしようとしています。Nokogiri CSS セレクターで使用できる OR 演算子はありますか?

thang= Nokogiri::HTML(IO.read "|cat page.html").css('table[@id="costbasisTable"] tr')

ヘッダー行を含むすべての行を正しくフェッチします (後続のページで繰り返されます)。

thang[0].inner_html
=> <th class="tLeft"></th><th>cellA2</th><th>cellA3data</th>

thang[1].inner_html
=> <td>cellB1</td><td>cellB2</td><td>cellB3data</td>

問題は次の場合です。その行にtdではなくthのみが含まれている場合、空白が返される可能性があります。

N=0
thang[N].css("td").map{|c| c.text.strip.gsub(/\t.*/,"").delete ",".tr("&/|:;\n","_")}.to_a

.css(...)のどのパラメーターが「任意の<td>OR<th>セルに一致する」ことを意味しますか?

これらの Nokogiri XML 要素の代わりに.xpath()を使用してこれを行うことは可能ですか?

4

1 に答える 1

7

次のいずれかを使用します。

# thang[n] is a Nokogiri <tr> node
cells = thang[n].css('th,td')
cells = thang[n].xpath('./th | ./td')

CSSバージョンは(そのような恐怖があった場合)すべての埋め込みテーブルと一致しますが、XPathバージョンは行の直接の子にのみ一致することに注意してください。

于 2012-05-29T05:10:07.257 に答える