使用xidel提取键值对

时间:2014-11-17 15:03:27

标签: html xpath xidel

我在网站上有多个表格,如下所示:

<table>
  <tr>
    <td>Name</td>
    <td>foo</td>
  </tr>
  <tr>
    <td>Count</td>
    <td>15</td>
  </tr>
  <tr>
    <td>Date</td>
    <td>2014-11-17</td>
  </tr>
</table>
<table>
  <tr>
    <td>Name</td>
    <td>bar</td>
  </tr>
  <tr>
    <td>Count</td>
    <td>42</td>
  </tr>
  <tr>
    <td>Date</td>
    <td>2014-12-24</td>
  </tr>
</table>
...

我希望收到类似这样的内容

foo    15
bar    42

我在xidel的第一次尝试是xidel --xpath "//table/tr[1]/td[2]" --xpath "//table/tr[2]/td[2]",但这是给予

foo
bar

15
42

如何在一行中提取两个值?

2 个答案:

答案 0 :(得分:2)

使用XPath或XQuery 3.0://table/tbody/(tr[1]/td[2] || ' ' || tr[2]/td[2])。我认为您需要明确请求该版本,至少我需要在http://videlibri.sourceforge.net/cgi-bin/xidelcgi上这样做。我解析为HTML,其中解析器添加了一个tbody元素,路径也需要它。

答案 1 :(得分:0)

xidel-0.9.5.4998.exe -s --input-format=xml <input> ^
                     --xquery "//table/concat(tr[1]/td[2],'&#09;',tr[2]/td[2])"
foo     15
bar     42