2014-11-17 2 views
2

У меня есть несколько таблиц на веб-сайте, как так:Использование 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

Использование XPath или XQuery 3.0: //table/tbody/(tr[1]/td[2] || ' ' || tr[2]/td[2]). Я думаю, вам нужно явно запросить эту версию, по крайней мере, мне нужно было сделать это на http://videlibri.sourceforge.net/cgi-bin/xidelcgi. И я анализировал как HTML, где синтаксический анализатор добавляет элемент tbody, и этот путь тоже нуждается в этом.

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 
+0

Это похоже на команду, но она не обернута должным образом, и ей не хватает описания того, что вы делаете и как она работает. –

Смежные вопросы