weidner / goutte
Requires
- php: >=7.3
- fabpot/goutte: ^4.0
- illuminate/support: ^8|^9|^10.0
Requires (Dev)
- orchestra/testbench: ^6|^8.0
README
此仓库实现了一个简单的 ServiceProvider,通过 Facade 在 Laravel 中轻松访问 Goutte 客户端的单例实例。有关 PHP 网页爬虫及其接口的更多信息,请参阅 @FriendsOfPHP/Goutte。
警告
Goutte 已弃用,建议使用 Symfony HttpBrowser
类 的 BrowserKit 组件作为直接替代。此包作为 Laravel 应用的简单集成而开发,因此也将被弃用。
使用 Composer 安装
在终端应用程序中,使用 cd
命令进入您的 Laravel 项目的根目录,并使用 composer 将项目作为依赖项。
$ cd ~/Sites/laravel-example-project $ composer require weidner/goutte
这将在您的 composer.json
文件中添加以下行,并将项目及其依赖项下载到您的项目的 ./vendor
目录中
// ./composer.json { "name": "weidner/laravel-goutte-test", "description": "A dummy project used to test the Laravel Goutte Facade.", // ... "require": { "php": "^7.2", "laravel/framework": "^8", "weidner/goutte": "^2", // ... }, //... }
使用方法
为了使用静态接口,我们首先需要自定义应用程序配置,以告诉系统它可以在哪里找到新的服务。打开您选择的编辑器中的 config/app.php
文件,并添加以下行([1]
,[2]
)
// config/app.php return [ // ... 'providers' => [ // ... /* * Package Service Providers... */ Weidner\Goutte\GoutteServiceProvider::class, // [1] This will register the Package in the laravel echo system /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, ], // ... 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, // ... 'Goutte' => Weidner\Goutte\GoutteFacade::class, // [2] It will register as an alias for the Goutte facade 'Hash' => Illuminate\Support\Facades\Hash::class, // ... ], ];
现在您应该能够在应用程序中使用 facade。一旦使用注册的别名,Laravel 将自动加载相应的类。
// routes/web.php Route::get('/', function() { $crawler = Goutte::request('GET', 'https://duckduckgo.com/html/?q=Laravel'); $crawler->filter('.result__title .result__a')->each(function ($node) { dump($node->text()); }); return view('welcome'); });
提示:如果您检索到 "未找到类 'Goutte'" 的异常,请尝试通过在项目根目录中运行 composer dump-autoload
来更新自动加载器。
提示:您还可以使用此包与 Lumen 一起使用。在 bootstrap/app.php
中注册 GoutteServiceProvider
,并在您的 AppServiceProvider
中提供配置目录的缺失路径(参看 #34)。
配置
您可以根据需要自定义默认的请求选项,以应用于客户端的每个请求。首先将默认配置复制到您的应用程序目录中
php artisan vendor:publish --provider="Weidner\Goutte\GoutteServiceProvider"
在 config/goutte.php
中打开创建的文件,并根据您的喜好自定义配置选项。
<?php return [ 'client' => [ 'max_redirects' => 0, ], ];
请参阅 Symfony Http Client 文档 了解可用选项的完整列表。
版本约束
发布 | 支持的版本 |
---|---|
Laravel Goutte 2.3 | Laravel 8/9/10 |
Laravel Goutte 2.2 | Laravel 8/9 |
Laravel Goutte 2.0 | Laravel 8 |
Laravel Goutte 1.6 | Laravel 5/6/7 |