0

アンカータグがテキストの親であるかどうかに関係なく、テーブルセルのtext()を取得する方法がわかりません。

と:

    <td class="c divComms" title="Komentarz|"> 
<a id="List1_Dividends_ctl01_HyperLink1" target="_blank" href="http://www.attrader.pl/pl/akcje/DRUKPAK/komunikat/EBI/none,20130104_090845_0000041461">uchwalona</a> 
<div class="stcm">2013-01-29</div></td>

それなし:

<td class="c divComms" title="Komentarz|Celem...">
proponowana
<div class="stcm">2012-10-05</div>
</td>

ハッシュの要素を構成する、私は期待します

 details = rows.collect do |row|
  detail = {}
  [
     [:paystatus, 'td[7]//text()[not(ancestor::div)]'],
     [:paydate, 'td[7]/div/text()'], # the 2013-01-29 or 2012-10-05 above
  ].each do |name, xpath|
    detail[name] = row.at_xpath(xpath).to_s.strip
  end

uchwalonaまたはproponowana (末尾のdivに日付がないことに注意)をキャッチしますが、現状では、aタグのテキストを無視します。ただし、私がそうtd[7]/a/text()しない限り、アンカーのテキスト「uchwalona」のみが読み取られます。

4

2 に答える 2

1

ユニオン演算子の使用| 動作するはずです:

[:paystatus, '(td[7]|td[7]/a)/text()']

[not(ancestor::div)](ダブルスラッシュを使用しない場合は、パーツは必要ないと思います)

于 2013-01-19T11:38:47.557 に答える
0

row.xpathの代わりにメソッドを使用すると、問題が解決したように見えたため.at_xpath、どういうわけかユニオン演算子が|無効になりました。

だから変わった

  detail[name] = row.at_xpath(xpath).to_s.strip

に:

  detail[name] = row.xpath(xpath).to_s.strip

|name, xpath|これは、以前は気づかなかったように過剰に含めないように、他のフィールドペアのいくつかのxpath式も強化する必要があることを意味しました。

于 2013-01-19T12:14:33.233 に答える