2017-09-16 6 views
0

그래서 나는이 같은 구조는 HTML 트리에서 테이블을 쿼리하고있다 :특정 유형의 데이터가 포함 된 노드 만 반환하는 XPath 쿼리가 있습니까?

... 
<table> 
    <tr> 
     <td> Some text </td> 
     <td> Some more text </td> 
     <td><a> Link text </a></td> 
    </tr> 
</table> 

나의 현재 XPath 쿼리는 다음과 같습니다 '\\table\tr\td\text()'이이 ['Some text', 'Some more text', '', '']

을 반환 단지를 반환 할 수있는 몇 가지 질의가 있습니까 td 노드가 링크가 없거나 더 나은 경우 링크 텍스트도 반환 할 수있는 쿼리가 있습니까? 쿼리에서 ['Some text', 'Some more text', 'Link text']을 받고 싶습니다.

+0

정말 XPath 쿼리를 사용해야합니까? 이것들은 느리고,'[... table.querySelectorAll ('td')]. map (td => td.textContent)'로 이것을 얻을 수 있습니다. – Kaiido

+1

XPath를 사용할 필요는 없지만 상대적으로 느려서 문제가되지 않으며 XPath가 매우 읽기 쉽다고 생각합니다. – binzabinza

답변

0
\\table\tr\td\\text() 

반환 TD 노드

+0

매우 이상하고 *** 구문 적으로 잘못되었고 지나치게 자세한 답변 *** upvoted 받아 들일 것입니다. [** 정답은 여기 **] (https://stackoverflow.com/a/46256031/290085)를보십시오. – kjhughes

1

이의 XPath의 모든 자손 텍스트 노드,

//td//text() 

는 문서의 모든 td 요소의 모든 텍스트 노드의 자손을 선택합니다.