Goutte: 一个简单的 PHP 网页抓取工具
Goutte 是一个用于 PHP 的网页抓取和网络爬虫库。它提供了一个友好的 API,可以轻松地抓取网站并从 HTML/XML 响应中提取数据。虽然 Goutte 目前已被标记为弃用,但它仍然是学习网页抓取的一个不错的起点。
Goutte 的特点
- 简单易用:Goutte 的 API 设计简洁,适合初学者。
- 强大的功能:支持抓取、链接点击、表单提交等功能。
- 依赖 Symfony 组件:Goutte 是 Symfony BrowserKit 组件的一个薄层封装。
安装 Goutte
要使用 Goutte,您需要在项目的 composer.json
文件中添加依赖:
composer require fabpot/goutte
使用 Goutte
创建一个 Goutte 客户端实例:
use Goutte\Client;
$client = new Client();
发起请求
使用 request()
方法发起请求:
$crawler = $client->request('GET', 'https://www.symfony.com/blog/');
提取数据
使用 CSS 选择器提取数据:
$crawler->filter('h2 > a')->each(function ($node) {
print $node->text() . "\n";
});
提交表单
$crawler = $client->request('GET', 'https://github.com/');
$crawler = $client->click($crawler->selectLink('Sign in')->link());
$form = $crawler->selectButton('Sign in')->form();
$crawler = $client->submit($form, ['login' => 'fabpot', 'password' => 'xxxxxx']);
注意事项
Goutte 在 v4 版本后已成为 Symfony BrowserKit 组件的简单代理。要迁移,您需要将 Goutte\Client
替换为 Symfony\Component\BrowserKit\HttpBrowser
。
结论
尽管 Goutte 已被弃用,但它仍然是一个学习网页抓取的好工具。对于需要更复杂功能的用户,建议转向 Symfony 的 HttpBrowser 组件。
行动号召
如果您对网页抓取感兴趣,尝试使用 Goutte 开始您的项目吧!