这 网络搜刮 Laravel 结合了 PHP 框架和专业库的强大功能,可以 automatiser l’extraction de données.
C’est une solution robuste pour collecter, traiter et organiser des informations en ligne. Découvrons ensemble dans cet article comment faire du 使用 Laravel 进行网页搜索.

使用 Laravel 进行刮擦的先决条件
Laravel 是一个 PHP 框架 广泛用于开发现代网络应用程序。
得益于其丰富的生态系统,它为开发以下项目提供了理想的环境 使用 PHP 进行网络搜刮 有组织、可维护的方式。首先,必须.....:
- 🔥 掌握 PHP 和 Laravel 的基础知识。
- 🔥 了解 HTML 和 CSS 以锁定元素。
- 🔥 知道如何操作 Composer 安装软件包。
👉 必不可少的工具有
- 下降 : la bibliothèque PHP de référence. Elle simplifie les requêtes et l’extraction de données.
- 傀儡匠/无头铬 无头浏览器。对于使用大量 JavaScript 的页面来说是必不可少的。
- Laravel HTTP 客户端 :允许您使用
Http::get()来检索简单的内容。
使用 Laravel 创建第一个 scraper 的教程
按照本教程的步骤,用 Laravel 创建一个功能强大的 scraper。
⚠ 始终遵守网站的使用条款和条件,以及网站的使用条款和条件。 robots.txt 和当地法律。限制负载(速率限制),识别用户代理,不收集敏感数据。
步骤 1:安装和配置
创建一个新的 Laravel 项目,并添加 Goutte(Laravel 集成)。
# 1) 创建一个新的 Laravel 项目
compose create-project laravel/laravel scraper-demo
cd scraper-demo
# 2) 添加 Goutte(与 Laravel 集成)
composer require weidner/goutte
步骤 2:创建工艺订单
生成一条命令,其中包含您的刮擦逻辑:
php artisan make:command ScrapeData
文件在此处创建: app/Console/Commands/ScrapeData.php.
第 3 步:编写刮板代码
在生成的命令中,添加 :
- ✅ 一个 HTTP 请求 来获取 HTML 内容。
- ✅德斯 CSS 选择器 来定位数据。
- ✅ 一个 环 来浏览项目并显示结果。
下面是一个例子 完整代码 pour scraper les titres d’articles d’un blog :
info("Scraping: {$url}");
// 1) HTTP 请求检索 HTML
$crawler = Goutte::request('GET', $url);
// 2) 使用 CSS 选择器
$nodes = $crawler->filter('h2 a');
// 3) 循环元素并显示
$nodes->each(function (Crawler $node, $i) {
$title = $node->text();
$link = $node->attr('href');
$this->line(($i+1) ."." .$title ." - " .$link);
});
return self::SUCCESS;
}
}
使用 Laravel 进行网络搜刮的最佳实践
制作 使用 Laravel 有效地进行网页刮擦时,需要注意以下几点提示:
1. Gestion des tâches et de la mise en file d’attente
抓取每个页面可能需要几秒钟。试想一下,如果你要抓取 1000 个页面,你的 Laravel 应用程序就会被阻塞很长一段时间,无法使用。解决方案:使用 工作 和 Laravel 尾巴.
- 一个 工作 c’est une tâche que vous voulez exécuter en arrière-plan.
- A 机尾 (file d’attente), c’est l’endroit où on range ces jobs pour qu’ils soient exécutés petit à petit, sans bloquer le reste.
下面是一个例子 代码,将刮擦逻辑封装在一个 Job 中:
// app/Jobs/ScrapePageJob.php
<?php
namespace App\Jobs;
use Goutte\Client; // Ou Guzzle/Http, selon ta stack
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class ScrapePageJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected string $url;
public function __construct(string $url)
{
$this->url = $url;
}
public function handle(): void
{
$client = new Client();
$crawler = $client->request('GET', $this->url);
// 简单示例:提取所有 <h1>
$titles = $crawler->filter('h1')->each(function ($node) {
return $node->text();
});
// 持久性/日志/事件...
foreach ($titles as $title) {
\Log::info("[Scraping] {$this->url} - H1: {$title}");
}
}
}
// app/Http/Controllers/ScraperController.php
onQueue('scraping'); // 如果需要专用队列
}
return response()->json(['status' => 'Scraping running in background 🚀']);
}
}
👉 Comme vous avez vu, les jobs vont dans une queue (file d’attente). Laravel propose plusieurs systèmes pour gérer cette file. Les plus utilisées sont :
- La file d’attente avec la base de données 工作以行的形式存储在 SQL 表中,然后由一个 worker.
- La file d’attente avec Redis 任务以超高速队列的形式存放在内存中,是处理大量任务的理想选择。
2.使用 Laravel 任务调度程序实现自动化
Laravel 集成了 任务调度程序 (scheduler) qui permet d’自动清除.
所以你可以 planifier l’exécution d’une commande de scraping 定时,例如每小时一次。
👉 Voici comment l’exécuter dans app/Console/Kernel.php :
command('scraper:run')->hourly();
// 有用的示例 :
// $schedule->command('scraper:run')->everyFifteenMinutes();
// $schedule->command('scraper:run')->dailyAt('02:30')->timezone('Indian/Antananarivo');
}
/**
* 注册订单。
*/
protected function commands(): void
{
$this->load(__DIR__ . '/Commands');
}
}
3.绕过防窃听保护
Beaucoup de sites mettent en place des protections contre les scrapers. Pour éviter d’être bloqué, il est mieux de :
- ✅ Changer l’User-Agent 模拟真实的浏览器。
- ✅ 管理最后期限 停顿sleep, throttle),以免目标服务器超载。
- ✅ 使用代理 将请求分发到多个 IP 地址。
使用 Laravel 进行网络搜索的替代方法有哪些?
Même si Laravel est pratique pour intégrer le scraping dans une application PHP, il existe d’autres solutions souvent plus spécialisées.
Python 是使用最广泛的刮擦语言。它拥有 Scrapy 和 BeautifulSoup 等强大的库。
- 无代码工具
De plus en plus d’outils permettent de faire du scraping 无编码 在哪里 avec l’aide de l’IA.我们引述 : 亮数据, Octoparse, Apify, ETC。

常见问题
如何使用 Laravel 搜索受登录保护的网站?
C’est l’un des défis les plus courants en web scraping. Pour y parvenir avec Laravel, il faut :
- 模拟连接 通过 POST 请求发送电子邮件地址和密码。
- 管理 cookie 或会话访问受保护的页面。
使用 Laravel 进行网页刮擦时,如何管理分页?
Pour gérer la navigation d’une page à l’autre avec Laravel, vous devez :
- 抓取第一页.
- Détecter le lien “page suivante” 的 CSS 选择器。
- 在每个链接上循环 jusqu’à la fin de la pagination.
如何导出刮擦数据(到 CSV、Excel 或 JSON)?
有了 Laravel,您就可以使用 .NET Framework 3.0:
fputcsv()用于 CSV。- 书店
MaatwebsiteExcel用于 Excel。 - 本地函数
json_encode()生成 JSON 文件。
如何处理刮擦过程中的错误和异常?
要使用 Laravel 管理失败的请求,你需要.NET Framework:
- 封装请求 于
try/catch. - Vérifier les codes d’état HTTP (404, 500, etc.). En cas d’erreur, les logger ou programmer un nouvel essai.
网络搜索是合法的还是非法的?
这 网络搜索的合法性 est un sujet complexe. Tout dépend du site ciblé et de l’usage des données.
📌了 法国的网络搜索 est souvent discuté dans le cadre du droit d’auteur et de la protection des bases de données.
💬 简而言之,"......"。 使用 Laravel 进行网页搜索 功能强大而灵活,但需要良好的实践才能保持其有效性和合法性。请在评论中告诉我们您的想法。





