2014-10-23 2 views
0

텍스트의 인스턴스를 얻을? 중첩 된 요소의 수는 임의적이므로 첫 형제, 제로 형제 및 두 번째 형제를 찾을 수 없습니다.파이썬/XPath는 다음을 감안할 때 임의의 요소

텍스트를 추출하는 일반적인 방법을 찾고 있습니다.

In [1]: d="""<table> 
    ...:  <tr> 
    ...:   <td> 
    ...:    <div>Text 1</div> 
    ...:   </td> 
    ...:   <td> 
    ...:    Text 2 
    ...:   </td> 
    ...:   <td> 
    ...:    <div> 
    ...:     <a href="#">Text 3</a> 
    ...:    </div> 
    ...:   </td> 
    ...:  </tr> 
    ...:  <tr> 
    ...:   ... 
    ...:  </tr> 
    ...: </table>""" 

In [3]: from lxml import etree 

In [4]: f = etree.HTML(d) 

In [5]: f.xpath('normalize-space(string(/table))') 
Out[5]: '' 

In [6]: f.xpath('normalize-space(string(//table))') 
Out[6]: 'Text 1 Text 2 Text 3 ... 
+0

나는이 문제 // * 해결할 생각 [문자열 길이를 (정규화 공간을 (./ 텍스트()))> 0]/텍스트() – Raghavendra

답변

0

내가 사용합니다 :

normalize-space(string(/table)) 
+0

두 슬래시가 필요하다고 생각합니다 ... –

+1

@ strimp099 아니요, 루트가 아닙니다 –

+0

흠 내 편집 내용을 볼 수 있으며 텍스트가'/ table'으로 선택되지 않았다고 잘못 말했습니까? –