如何在Laravel 8中集成使用Simple HTML DOM Parser解析库
Laravel 8 对接 Simple HTML DOM Parser 解决方案
优先推荐使用第一种方案,改动最小、维护成本最低:
方案1:直接集成原生Simple HTML DOM库
- 原生Simple HTML DOM本身没有Laravel版本绑定,可直接通过composer安装官方包,执行命令:
composer require simplehtmldom/simplehtmldom - 安装完成后在需要用到的控制器顶部引入对应类即可:
use simplehtmldom\HtmlWeb; use simplehtmldom\HtmlDocument; - 原有业务逻辑几乎无需调整,仅需修改DOM初始化的入口代码即可:
原有写法:$html = HtmlDom::file($目标地址);
调整后写法:$html = (new HtmlWeb())->load($目标地址);
后续的节点选择、属性获取、遍历等操作语法和你之前使用的完全一致,不需要修改任何业务逻辑代码。
方案2:手动适配原有yangqi/Htmldom包(完全不改动原有调用逻辑可选)
如果不想修改任何原有写法,可以手动把原包适配到Laravel 8:
- 在项目
app目录下新建Libraries文件夹,把原yangqi/Htmldom的所有源码复制到该目录下 - 修改源码内的命名空间,统一改为
namespace App\Libraries;开头 - 打开
config/app.php,在providers数组中新增一行:App\Libraries\HtmldomServiceProvider::class, - 在同文件的
aliases数组中新增一行:'Htmldom' => App\Libraries\Htmldom\Facades\Htmldom::class, - 执行命令
composer dump-autoload刷新自动加载配置,原有代码即可直接运行。
两种方案都无需切换到Goutte等其他库,也不需要重写现有业务逻辑,实测在Laravel 8及以上版本都可以稳定运行。
内容的提问来源于stack exchange,提问作者Vetalya
相关产品推荐
相关产品推荐

