使用PHP和Goutte进行网页爬取

我总结了一下,因为有机会使用。

首先,从Composer的安装开始。

安装Goutte需要使用Composer。
具体步骤如下:
由于我使用的是Mac,因此使用brew在全局安装。

$ brew tap josegonzalez/homebrew-php
$ brew install josegonzalez/php/composer
$ composer -V
Composer version 1.2.4 2016-12-06 22:00:51

安装Goutte

在Composer中进行安装非常简单。

$ composer require fabpot/goutte

完成后,将会生成一个名为 “vendor” 的目录。这个目录中将包含Goutte以及其它相关的依赖库。

试着使用

    1. 需要加载vendor/autoload.php文件。

 

    1. 创建一个Client对象。

 

    1. 访问页面并创建一个Crawler对象。

 

    使用filter方法筛选出所需的元素,然后进行一些操作。
<?php

// 1
require_once './vendor/autoload.php';

// 2
$cli = new Goutte\Client();

// 3
$url = '対象ページのURL';
$crawler = $cli->request('GET', $url);

// 4
$title = $crawler->filter('div.article > div#body > h1')->text(); // タイトルを取得
$crawler->filter('table > tr > td')->each(function($td){
    echo $td->text()."\n"; // テーブルのtd要素のテキストを出力する
});

在filter函数的参数中,您需要指定CSS选择器。
CSS3共有42种选择器,可以以简单的方式整合和使用,这里提供使用方法的参考。

使用Goutte来优化Web爬虫非常容易理解。

看起来,这个爬虫对象似乎继承了数组实用工具类。
爬虫对象的角色似乎是数据提取的工作者。
记住 eq、attr、text、html、extract、selectLink、selectButton、link、links 和 form 这些方法会很有用。
在数组操作方面,常用的方法可能会有 each、first、last、filter、contains 和 count。

大致上的使用方式就如引用中所述。

现在只需要盯着目标HTML看,思考如何才能指定所需元素!

最后

我之前并没有用过太多其他的网页抓取库,但是使用Goutte的尝试也没有遇到太多困难。
更多的时候,我在抓取网页时遇到的问题是网页的HTML结构很混乱,让人感到困扰。希望未来的网页都能拥有清晰的结构……

请参考

我只在进行单一页面的爬取时使用它,但当然也可以作为网络爬虫使用。

    • Goutteでスクレイピングする方法めも

 

    PHP と Goutte ではじめる超絶簡単クローラー入門 ログイン編
bannerAds