Laravel + Goutte 开始爬虫旅行

说到爬虫,我们第一印象将会是 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 文档

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值