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

捕捉uchwalonaproponowana(注意没有尾随 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 回答