2016-06-06 3 views
0

이 HTML에서 클럽 전화 번호를 수집하려고합니다. 여기 잘못된 xpath 쿼리

<div id="content"> 
    <div class="container"> 
    <div class="padded"> 
     <ul class="state-list"> 
     <ul class="state-city-list"> 
      <li class="jumper"> 
     <div class="clubinfo"> 
      <div class="clubaddress">123 West Palm Blvd</div> 
      <div class="clubphone">5555551123</div> 
     </div> 
      </li> 
     </ul>      
     <ul class="state-city-list"> 
      <li class="jumper"> 
     <div class="clubinfo"> 
      <div class="clubaddress">456 West Palm Blvd</div> 
      <div class="clubphone">5555555456</div> 
     </div> 
      </li> 
     </ul> 
     <ul class="state-city-list"> 
      <li class="jumper"> 
     <div class="clubinfo"> 
      <div class="clubaddress">789 West Palm Blvd</div> 
      <div class="clubphone">5555555789</div> 
     </div> 
      </li> 
     </ul> 
     <ul class="state-city-list"> 
      <li class="jumper"> 
     <div class="clubinfo"> 
      <div class="clubaddress">213 West Palm Blvd</div> 
      <div class="clubphone">5555555213</div> 
     </div> 
      </li> 
     </ul> 
     </ul> 
    </div> 
    </div> 
</div> 

내 PHP 코드입니다 : 여기

내 HTML입니다

$htmlfile='phonecontents'; 
    $xml=new DOMDocument(); 
    $xml->preserveWhiteSpace=false; 
    $xml->loadHTMLFile($htmlfile); 
    $xpath = new DOMXpath($xml); 
    //$elm = $xpath->query('/div[@id="content"]/div[@class="container"]/div[@class="padded"]/ul[@class="state-list"]/li[@class="jumper"]/div[@class="clubinfo"]/div[@class="clubphone"]'); 
    $elm = $xpath->query('/div[@id="content"]/div[@class="clubinfo"]/div[@class="clubphone"]'); 
    if(!is_null($elm)){ 
     var_dump($elm); 
     foreach($elm as $el){ 
     echo $el->nodeValue."\n"; 
     } 
    } else { 
     echo "NO DATA FOUND \n"; 
    } 

I 해요 내가 XPath는 새로운이야하지만 난 내 데이터를 얻을 수 없습니다이기 때문에 아주 확실하지 바르게. PHP 코드를 보면 두 가지 쿼리를 시도해 보지도 못했지만 작동하지 않는 것으로 보입니다.

+1

'// div [@ class = "clubphone"]'작동해야합니다. 당신은 모든 HTML을 얻고 xpath를 사용하여 그것을 검사하기 시작할 때''//''을 할 필요가있다. –

답변

0

는 다음을 시도해보십시오

$elm = $xpath->query('//div[@id="content"]//div[@class="clubinfo"]/div[@class="clubphone"]'); 

하나 슬래시를 사용하여, 두 개의 슬래시를 사용하여 "의 후손"의미 "직접 아이"를 의미한다.