Точное выражение зависит от фактической структуры вашего документа.
В самом общем случае - при выборе всех ячеек первого столбца из таблицы - вы можете использовать следующее выражение:
<path_to_table>//td[1]
Например, в этом документе:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>i</td>
<td>ii</td>
<td>iii</td>
<td>iv</td>
</tr>
</table>
Это выражение:
/table//td[1]
Дает:
<td>1</td>
<td>a</td>
<td>i</td>
Обратите внимание, что я использую ось потомка или себя (//
), поскольку в таблицах HTML допускаются необязательные элементы группировки (например, <tbody>
), которые могут присутствовать или не присутствовать. Однако это будет включать и ячейки первого столбца из вложенных таблиц. Рассмотрим этот вход:
<table>
<tr>
<td>1</td>
<td><table><td>test</td></table></td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>i</td>
<td>ii</td>
<td>iii</td>
<td>iv</td>
</tr>
</table>
То же выражение сверху возвращает:
<td>1</td>
<td>test</td>
<td>a</td>
<td>i</td>
Если вы знаете больше о вашей конкретной структуре таблицы, вы можете написать более конкретное выражение. Например, на предыдущем входе это выражение:
/table/tr/td[1]
... возвращает только ячейки из самой внешней таблицы:
<td>1</td>
<td>a</td>
<td>i</td>