2014-11-25 4 views
0

저는 파이썬으로 Google 애플리케이션 엔진 프로젝트를 작성하고 있습니다. 은행 지점을 폐업하고 그들로부터 환율을 받아야합니다. XPath. 특정 형제 구하기

HTML의 예

:

<tr> 
          <td width="2"><img src="./images/zero.gif" width="2" height="2" border="0" /></td> 
          <td width="41" class="curvalsh" align="left" valign="middle"><font color="#DC241F">USD</font></td> 
          <td width="41" class="curvalsh" align="right" valign="middle"><b> 15.20 </b></td> 
          <td width="4" align="left" valign="middle"><img src="./images/zero.gif" width="2" height="20" border="0" hspace="1"></td> 
          <td width="41" class="curvalsh" align="right" valign="middle"><b> 16.00 </b></td> 
          <td width="4" align="left" valign="middle"><img src="./images/zero.gif" width="2" height="20" border="0" hspace="1"></td> 
          <td width="41" class="curvalsh" align="right" valign="middle"> - </td> 
          <td width="2" align="left" valign="middle"><img src="./images/zero.gif" width="2" height="20" border="0" hspace="1"></td> 
         </tr> 

내가 (15.20과 16.00로 태그) 태그를 포함하는 "USD"텍스트 후에 텍스트 다음 두 태그를 얻을 필요가있다. 난 이미 했어 무엇

은 다음과 같습니다

xpath = "//tr/td[text()='USD']/following-sibling::td/text()" 

그러나 이것은 아무것도 반환하지 않으며 이것은 내가 얻을 지정해야하기 때문에 내가 필요 정확히 아닌 2 개 태그 태그 다음 텍스트를 포함 "USD"는 텍스트가 포함되지 않은 태그이기도합니다.

는 편집 : 나는이 같은 노력했습니다

는 여전히 아무것도를 검색 한 텍스트에 도착하기 전에 td 안에 다른 태그 그래서 당신이 중 하나를 검색 할 수 있다는 것을

xpath = "//tr/td[text()='USD']/following-sibling::td[matches(text(),'(^|\W)[0-9]+.[0-9]+($|\W)','i')]/text()" 

답변

0

통지를 반환하지 않습니다 직접 :

//tr/td/font[text()='USD']...... 

또는

//tr//font[text()="USD"]...... 

어떤 경우에는 파일 시스템을 탐색 할 때와 마찬가지로 ..을 사용하여 한 레벨 위로 올라갑니다.

, 당신은 b/text()를 사용하여 직접 참조하거나에서 다음 형제 노드 아래에있는 모든 텍스트를 취할 수있는 숨어 또 다른 태그가이 //text()

이 보인다 어떻게 수도 있습니다 :

//tr/td/font[text()='USD']/../following-sibling::td/b/text() 
+0

이 나와 함께 작동 , 감사! 등의 내부 태그를 무시할 수 있습니다. 일종의 보편적 인 xpath 표현식을 작성하는 것과 같습니다. 문제는 그 같은 약 30 사이트를 스크랩해야하므로 각각의 xpath 표현을 별도로 작성하지 않아야한다는 것입니다. – Elena

+0

은'/'모든 태그와 함께 또는'/'사이에 태그를 건너 뛰고, 어떤 태그에도'*'를 사용할 수 있으며, 다른 마법은 사용할 수 없습니다 ... –