fabpot/goutte

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

简单的PHP网络爬虫

安装次数: 50,012,896

依赖关系: 390

推荐者: 4

安全: 0

星标: 9,212

关注者: 349

分支: 1,028

开放问题: 138

类型:应用程序

v4.0.3 2023-04-01 09:05 UTC

README

Goutte 是一个用于 PHP 的屏幕抓取和网页爬取库。

Goutte 提供了一个便捷的 API 来爬取网站并从 HTML/XML 响应中提取数据。

警告:此库已弃用。从 v4 版本开始,Goutte 成为了一个简单代理,用于访问来自 HttpBrowser 类Symfony BrowserKit 组件。为了迁移,请将代码中的 Goutte\Client 替换为 Symfony\Component\BrowserKit\HttpBrowser

要求

Goutte 依赖于 PHP 7.1+。

安装

在您的 composer.json 文件中将 fabpot/goutte 添加为依赖项

composer require fabpot/goutte

使用

创建一个 Goutte 客户端实例(它扩展了 Symfony\Component\BrowserKit\HttpBrowser

use Goutte\Client;

$client = new Client();

使用 request() 方法发起请求

// Go to the symfony.com website
$crawler = $client->request('GET', 'https://www.symfony.com/blog/');

该方法返回一个 Crawler 对象(Symfony\Component\DomCrawler\Crawler)。

要使用您自己的 HTTP 设置,您可以为 Goutte 创建并传递一个 HttpClient 实例。例如,要添加 60 秒的请求超时

use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;

$client = new Client(HttpClient::create(['timeout' => 60]));

点击链接

// Click on the "Security Advisories" link
$link = $crawler->selectLink('Security Advisories')->link();
$crawler = $client->click($link);

提取数据

// Get the latest post in this category and display the titles
$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']);
$crawler->filter('.flash-error')->each(function ($node) {
    print $node->text()."\n";
});

更多信息

阅读关于 BrowserKitDomCrawlerHttpClient 的 Symfony 组件文档,以获取有关 Goutte 的更多信息。

发音

Goutte 发音为 goot,即与 boot 同韵,而不是 out

技术信息

Goutte 是围绕以下 Symfony 组件的一个薄层包装: BrowserKitCssSelectorDomCrawlerHttpClient

许可证

Goutte 使用 MIT 许可证。