2013-11-22 2 views
1

пытаюсь использовать XPATH для извлечения данных из файлов XHTML, у меня есть сценарий, где я хочу совместить элемент TD, а затем получить TD сразу после него.XPath, выбрав узел сразу после соответствия критериям узла

Вот HTML образец

<tr> 
    <td colspan="3" style="border-top:1px solid rgb(234,234,234);padding:0pt 0pt 16px;width:560px">   </td> 
    </tr> 
    <tr> 
    <td colspan="2" style="font:12px/18px Arial,sans-serif;padding:0 10px 0 0;color:rgb(51,51,51);width:480px" align="right" valign="top"> Item Subtotal: </td> 
    <td style="font:12px/18px Arial,sans-serif;color:rgb(51,51,51);width:80px" align="right" valign="top"> $25.79 </td> 
    </tr> 
    <tr> 
    <td colspan="2" style="font:12px/18px Arial,sans-serif;padding:0 10px 0 0;color:rgb(51,51,51);width:480px" align="right" valign="top"> Shipping &amp; Handling: </td> 
    <td style="font:12px/18px Arial,sans-serif;color:rgb(51,51,51);width:80px" align="right" valign="top"> $0.00 </td> 
    </tr> 
    <tr> 
    <td colspan="2" style="font:12px/18px Arial,sans-serif;padding:0 10px 0 0;color:rgb(51,51,51);width:480px" align="right" valign="top"> Total Before Tax: </td> 
    <td style="font:12px/18px Arial,sans-serif;color:rgb(51,51,51);width:80px" align="right" valign="top"> $25.79 </td> 
    </tr> 
    <tr> 
    <td colspan="2" style="font:14px Arial,sans-serif;padding:10px 10px 10px 0;color:#333;width:480px" align="right" valign="top"> Shipment Total: </td> 
    <td style="color:#333;font:14px Arial,sans-serif;padding:10px 0 5px 0;color:#333;width:80px" align="right" valign="top"> <b> $25.79 </b> </td> 
    </tr> 

Что я пытаюсь сделать это, получить элемент TD с имеет «Пересылка Total», а затем извлечь значение из элемента TD сразу после него. Мне удалось выбрать элемент с помощью XPATH, но не может найти способ, чтобы перейти к следующему элементу

xhtml = etree.HTML(i.get('content').encode('utf8')) 
result = etree.tostring(xhtml, pretty_print=True, method="html") 
root = html.fromstring(result) 
print root.xpath('//td[contains(text(), "Shipment Total:")]') 

Его легче TODO, что в BeautifulSoup, но я ограничен с помощью XPath, кто может помочь, если это будет возможно?

благодаря

ответ

1

Для того, чтобы сразу получить TD после TD вы выбрали, вы можете быть заинтересованы в этом XPath выражение:

//td[contains(text(), "Shipment Total:")]/following-sibling::td 
Смежные вопросы