2013-11-22 5 views
1

에서 XPath를 사용하여 XHTML 파일에서 데이터를 추출하려고 시도한 직후에 노드를 선택하면 TD 요소와 일치시키고 그 다음에 TD를 얻는 시나리오가 있습니다. 여기 XPath 조건 일치 노드

는 "출하 총"을 가지고와 TD 요소를 가져온 다음 바로 후 TD 요소에서 값을 추출 할 일은 노력하고 무엇 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> 

입니다. 나는 사람이이 가능할 것이다 경우 도움이 될 수 있습니다, XPATH를 사용하여 요소를 선택하는 데 성공하지만, BeautifulSoup로에 그 할일 다음 요소

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:")]') 

그것 쉽게 이동할 수있는 방법을 찾을 수 있지만, XPath를 함께 제한입니까?

감사

답변

1

당신이 XPath 식에 관심이있을 수 선택한 TD 직후 TD를 얻기 위하여 :

//td[contains(text(), "Shipment Total:")]/following-sibling::td