使用xpath帮助从HTML表中提取文本

时间:2010-10-17 11:32:42

标签: xpath html-parsing

我正试图在nobr标签之间拉文本。

这是表格的一部分:

       <table class="report-main-table dirLTR NormalTxt" width="100%" border="0" cellspacing="0" cellpadding="0">

<thead>

<tr>

<td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1505;&#1492;"&#1499; &#1506;&#1500;&#1493;&#1514; &#1489;&#1513;"&#1495;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1497;&#1506;&#1491; &#1492;&#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1505;&#1493;&#1490; &#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1505;&#1492;"&#1499; &#1494;&#1502;&#1503; &#1488;&#1493;&#1497;&#1512; &#1500;&#1495;&#1497;&#1493;&#1489;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1492;&#1502;&#1505;&#1508;&#1512; &#1513;&#1495;&#1493;&#1497;&#1490;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1513;&#1506;&#1514; &#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1514;&#1488;&#1512;&#1497;&#1498; &#1513;&#1497;&#1495;&#1492;</b></nobr></td>

</tr>

</thead>

<tr class="report-data-row-even">

<td class="NormalTxt report-data-cell report-data-column-even"><nobr>0.0285</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>&#1508;&#1512;&#1496;&#1504;&#1512;</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>SMS</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>1</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>054-2570130</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>00:14:09</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>27/09/2010</nobr></td>

</tr>

<tr class="report-data-row-odd">

<td class="NormalTxt report-data-cell report-data-column-even"><nobr>0.0000</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>&#1505;&#1500;&#1511;&#1493;&#1501;</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>SMS</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>1</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>052-3669127</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>00:47:25</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>27/09/2010</nobr></td>

</tr>

我正在尝试这个xpath表达式:// table / tr / td / nobr /,但这不起作用。

正确的xpath表达式是什么?

由于

2 个答案:

答案 0 :(得分:0)

尝试//table//td/nobr

编辑:根据要求,这是表达式逻辑。

我们正在寻找nobr元素的内部文字(nobr

  • 位于表格单元格内(td/nobr),
  • 是文档中所有表格的后代(//table//td/nobr:这里我们跳过tr元素以及theadtbodytfoot元素可能发生在tabletd元素之间。

答案 1 :(得分:0)

使用

//nobr

这可能比以下更有效:

//table//td/nobr

因为//缩写导致完全遍历以当前节点为根的树,并且我们在前一个表达式中只有//缩写一次,而在后一个表达式中只有两次。

当您知道XML文档的结构时,请始终尽量避免使用//缩写。