这篇文章主要介绍了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);
/
沃梦达教程
本文标题为:PHP xpath提取网页数据内容代码解析
基础教程推荐
猜你喜欢
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19
- PHP命名空间简单用法示例 2022-12-01
- PHP中的错误及其处理机制 2023-06-04
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- PHP实现Redis单据锁以及防止并发重复写入 2022-10-12
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09
- 使用PHP开发留言板功能 2023-03-13
- php array分组,PHP中array数组的分组排序 2022-08-01