2016-11-22 2 views
-1

참고 : 요소의 부모를 찾고있는 것이 아닙니다. 그 안에 다른 요소가 들어있는 요소를 찾고 있습니다.다른 요소가 포함 된 요소에 CSS 선택기를 작성하려면 어떻게해야합니까?

레일즈 4.2.7을 사용 중이며 Nokogiri를 사용하여 HTMl 문서를 구문 분석하고 있습니다. 내 문서에서 첫 번째 행 (첫 번째 tr 요소)에 적어도 하나의 th 요소가있는 테이블을 찾고 싶습니다. 이를 위해 CSS 선택기를 작성하려면 어떻게해야합니까? 테이블을 선택하기 만하고 th 요소 자체는 선택하지 않으려합니다. 여기에 문서 첫 번째 trth 요소를 필터 모든 테이블을 포함하는 Array#select 방법을 사용하려고 할 수 있습니다

<table> 
    <tbody> 
     <tr> 
      <th>Header 1</th> 
     </tr> 
     <tr> 
      <td>Other data</td> 
     </tr> 
     … 
    </tbody> 
</table> 
+0

부모 선택기 CSS3에 존재하지 않습니다. 여기에 많은 기사 중 하나가 있습니다. https://www.google.ca/amp/s/css-tricks.com/parent-selectors-in-css/amp/?client=ms-android-rogers-ca. 이 답변에서와 같은 옵션 종류 일 경우 jquery를 시도 할 수 있습니다. 테이블을 얻으면 부모를 얻습니다. http://stackoverflow.com/a/3523794/3366016 – user3366016

+0

"[mcve]"을 (를) 읽으십시오. 우리는 여러분이 입력 한 데이터의 샘플뿐만 아니라 여러분이 시도한 것을보고 싶습니다. –

+0

가능한 CSS 복제본 선택기가 있습니까? (http://stackoverflow.com/questions/1014861/is-there-a-css-parent-selector) –

답변

0

내에서 선택 희망 테이블의 예입니다. 예를 들어

, 당신은 Nokogiri 객체가 doc라는 있다고 가정

require "nokogiri" 
require "open-uri" 

url = # your url 
doc = Nokogiri::HTML.parse(open(url)) 

tables = doc.css("table").select do |table| 
    # consider only the first row of each table 
    first_row = table.css("tr").first 

    # check if that row's children contains a <th> element 
    first_row.children.map(&:name).include?("th") 
end