网页内容抓取乱码?LaminasDom+XPath/CSSSelector轻松搞定

PHPz
发布: 2025-06-20 10:16:28
原创
799人浏览过

在进行网络爬虫或者网页内容分析时,经常需要从HTML文档中提取特定的信息。然而,原始的DOM操作往往比较繁琐,而且不同的网页结构差异很大,使得提取过程变得复杂而容易出错。这时候,Laminas\Dom组件就能派上大用场。

laminas\dom组件提供了一个统一的接口,可以使用xpath或者css选择器来查询dom文档。这意味着你可以像使用jquery一样,用简洁的css选择器来定位元素,或者使用更强大的xpath表达式来精确地提取数据。

使用Composer安装Laminas\Dom非常简单:

composer require laminas/laminas-dom
登录后复制

示例:使用CSS选择器提取标题

假设我们有以下HTML代码:

<!DOCTYPE html>
<html>
<head>
    <title>Laminas\Dom 示例</title>
</head>
<body>
    <div class="content">
        <h1>这是一个标题</h1>
        <p>这是一段文字。</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
    </div>
</body>
</html>
登录后复制

我们可以使用Laminas\Dom\Query来提取

标签的内容:
use Laminas\Dom\Query;

$html = '<!DOCTYPE html><html><head><title>Laminas\Dom 示例</title></head><body><div class="content"><h1>这是一个标题</h1><p>这是一段文字。</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p></div></body></html>';

$query = new Query($html);
$results = $query->execute('div.content h1');

foreach ($results as $result) {
    echo $result->nodeValue . PHP_EOL; // 输出:这是一个标题
}
登录后复制

示例:使用XPath提取内容

同样,我们也可以使用XPath来提取相同的信息:

use Laminas\Dom\Query;

$html = '<!DOCTYPE html><html><head><title>Laminas\Dom 示例</title></head><body><div class="content"><h1>这是一个标题</h1><p>这是一段文字。</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p></div></body></html>';

$query = new Query($html);
$results = $query->execute('//div[@class="content"]/h1');

foreach ($results as $result) {
    echo $result->nodeValue . PHP_EOL; // 输出:这是一个标题
}
登录后复制

通过以上示例可以看出,Laminas\Dom组件极大地简化了DOM操作,使得我们可以更方便、更高效地从HTML文档中提取数据。无论是简单的CSS选择器还是复杂的XPath表达式,Laminas\Dom都能轻松应对。

Composer在线学习地址:学习地址

注意:

需要注意的是,laminas/laminas-dom 组件已经被官方标记为 abandoned,不再进行维护。官方推荐使用 symfony/dom-crawler 作为替代方案。因此,在新的项目中,建议优先考虑 symfony/dom-crawler。

总而言之,虽然 laminas/laminas-dom 组件已经停止维护,但它仍然是一个非常有用的工具,可以帮助我们解决网页内容抓取和解析的难题。如果你还在使用它,可以继续利用其强大的功能。但同时,也建议考虑迁移到 symfony/dom-crawler 等更活跃的替代方案。

以上就是网页内容抓取乱码?LaminasDom+XPath/CSSSelector轻松搞定的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号