使用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以及其它相关的依赖库。
试着使用
-
- 需要加载vendor/autoload.php文件。
-
- 创建一个Client对象。
-
- 访问页面并创建一个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 ではじめる超絶簡単クローラー入門 ログイン編