主页 > 知识库 > PHP xpath提取网页数据内容代码解析

PHP xpath提取网页数据内容代码解析

热门标签:如何在世界地图标注 梧州市机器人外呼系统怎么样 地图标注符号样式有 公司外呼系统中心 临沂crm外呼系统平台 天客通地图标注 菏泽语音外呼系统运营商 电子地图标注怎么修改 厦门400电话办理选易号网

想要使用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);    
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • PHP操作XML中XPath的应用示例
  • php用xpath解析html的代码实例讲解
  • PHP xpath()函数讲解
  • PHP registerXPathNamespace()函数讲解
  • PHP使用xpath解析XML的方法详解
  • php+xml编程之xpath的应用实例
  • php XPath对XML文件查找及修改实现代码

标签:迪庆 泸州 贵阳 郴州 黄石 白城 鸡西 绵阳

巨人网络通讯声明:本文标题《PHP xpath提取网页数据内容代码解析》,本文关键词  PHP,xpath,提取,网页,数据,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《PHP xpath提取网页数据内容代码解析》相关的同类信息!
  • 本页收集关于PHP xpath提取网页数据内容代码解析的相关信息资讯供网民参考!
  • 推荐文章