当前位置: 首页 > 工具软件 > Goutte > 使用案例 >

Laravel + Goutte 开始爬虫旅行

常智勇
2023-12-01

说到爬虫,我们第一印象将会是 Python 。因其拥有丰富的网络抓取模块,语法简洁易上手,开发效率高等优点。

那么 PHP 如何开始爬虫之路呢,PHP 也有许多强大第三方库支持。比较著名的 PHP 爬虫框架就有 phpspider, PHP Selenium。

接下来我们将使用 Goutte 这个 PHP 的爬虫库来自己写创建一个简易的爬虫。

安装

Goutte Git地址

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

Goutte 提供了一个很好的 API 来抓取网站并从 HTML/XML 响应中提取数据。

composer require fabpot/goutte

使用

use Goutte\Client;

public function spider($url)
{
    $client  = new Client();
    $crawler = $client->request('GET', $url);

    // 这里我使用的是 Xpath 
    $name    = $crawler->filterXPath('//div[@class="company-name"]')->text();

    // 也可以使用 filter 选择器和 Jquery 一样,可以支持嵌套以及 each 循环
    $navs    = $crawler->filter('#menus li');

    $navs->each(function ($node) {
        echo $node->text().'<br>';
    });

    echo $name;
}

阅读 BrowserKitDomCrawlerHttpClient Symfony 组件的文档,了解关于使用 Goutte 可以做什么的更多信息。

设置 Header

由于 BrowserKit 将在执行期间覆盖用户代理头,因此必须使用setServerParameter()将用户代理头放回去。

$client = new Client();
$client->setServerParameter('HTTP_USER_AGENT','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36');
$client->setServerParameter('HTTP_ACCEPT_LANGUAGE','zh-CN,zh;q=0.9');

$_SERVER 文档

至此,分析一下需要抓取数据的规律,就可以去写一个自己的爬虫了。抓取一些简单的网站已经绰绰有余了。

 类似资料: