PHP xpath 추출 웹 데이터 내용 코드 분석

xpath 를 사용 하여 html 내용 을 분석 하려 면 PHP 는 두 개의 대상 을 가지 고 있 습 니 다.
DOMDocument,DOMXpath,loadHtml 초기 화 는 일반적으로 많은 경 고 를 보 내지 만 사용 에 영향 을 주지 않 습 니 다.@으로 오 류 를 차단 합 니 다.

  /**
   *    DOMXpath  
   *
   * @param [type] $content     
   * @param [array] $pathinfo     
   *
   * @return void
   */
  private function _createXpathObj($content, $patinfo)
  {
    //     xpath   ,    xpath
    if (!$this->_existsXpathParse($patinfo)) {
      return;
    }
    try {
      $dom = new \DOMDocument();
      @$dom->loadHtml($content);
      $dom->normalize();
      $xpath = new \DOMXpath($dom);
      $this->xpathObj = $xpath;
    } catch (\Exception $e) {
      getService('logger')->warning('Parse html fail', ['content' => $content]);
    }
  }
그 중$node 는 DOMElement 대상 입 니 다.

  /**
   *   Xpath   
   *
   * @param [type] $pat     
   *
   * @return string
   */
  private function _getXpathField($pat)
  {
    $objs = $this->xpathObj->query($pat);
    if ($objs->length > 0) {
      $node = $objs->item(0);
      $outerHTML = $node->ownerDocument->saveHTML($node);
      return trim($outerHTML);
      #        innerhtml
      //$innerHTML = '';
      //foreach ($node->childNodes as $childNode){
      //   $innerHTML .= $childNode->ownerDocument->saveHTML($childNode);
      //}
      //return $innerHTML; 
      #              
      //return $node->textContent; //$node->nodeValue;
    }
    return '';
  }
예시

<?php
    $dom = new DOMDocument('1.0','UTF-8');
    $dom->loadHTML('<html><body><div><p>p1</p><p>p2</p></div></body></html>');    
    $node = $dom->getElementsByTagName('div')->item(0);    
    $outerHTML = $node->ownerDocument->saveHTML($node);    
    $innerHTML = '';
    foreach ($node->childNodes as $childNode){
        $innerHTML .= $childNode->ownerDocument->saveHTML($childNode);
    }
    echo '<h2>outerHTML: </h2>';
    echo htmlspecialchars($outerHTML);
    echo '<h2>innerHTML: </h2>';
    echo htmlspecialchars($innerHTML);    
?>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기