weidner/goutte

此包已被弃用且不再维护。作者建议使用 symfony/browser-kit 包。

Goutte 的 Laravel Facade,一个简单的 PHP 网页爬虫

2.3.0 2023-03-16 08:45 UTC

This package is auto-updated.

Last update: 2024-01-25 20:30:07 UTC


README

此仓库实现了一个简单的 ServiceProvider,通过 FacadeLaravel 中轻松访问 Goutte 客户端的单例实例。有关 PHP 网页爬虫及其接口的更多信息,请参阅 @FriendsOfPHP/Goutte

警告

Goutte 已弃用,建议使用 Symfony HttpBrowserBrowserKit 组件作为直接替代。此包作为 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