PHP xpath提取网页数据内容代码解析
发布:smiling 来源: PHP粉丝网 添加日期:2022-03-18 10:24:17 浏览: 评论:0
这篇文章主要介绍了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);
- ?>
Tags: xpath PHP提取网页数据内容
- 上一篇:通过实例解析PHP数据类型转换方法
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)