Goutteで複数ページからスクレイピング

Goutte

Goutte

Goutteというクローラーを使用して、様々なサイトから情報を取得してみます。
これをスクレイピングといいます。
 
まずは以下2つをダウンロードします。

スポンサードリンク

基本はphpに以下を記述します。
<?php
require __DIR__.’/goutte.phar’;
use GoutteClient;
// Goutte
$client = new Client();
// ページを取得する
$crawler = $client->request(‘GET’, ‘http://exsample.com’);
?>
(‘GET’, ‘http://exsample.com’);のところに、取得したいURLを記述します。
 
 
 
それから表示したいところに以下を書き込みます。
 
<?php $crawler->filter(‘.table’)->eq(0)->each(function($sample) { 
  echo $sample->html(); 
}); ?>
 
eq(0)で何番目のtableを取得するのか、フィルターをかけている。
ep(1)にすると「2番めのtableを取得する」、という具合です。
最後のhtml()は「table内のタグごと取得して表示」という意味です。
ここをtext()にすると、テキストのみ取得します。
 
基本は以上です。
 
 

2箇所から取得したい場合。

http://exsample01.comhttp://exsample02.comの2箇所から取得する例です。
 
 
<?php
require __DIR__.’/goutte.phar’;
use GoutteClient;
// Goutte
$client = new Client();
// ページを取得する
$crawler = $client->request(‘GET’, ‘http://exsample01.com’);
?>
 
<?php
require __DIR__.’/goutte.phar’;
use GoutteClient2;
// Goutte
$client2 = new Client();
// ページを取得する
$crawler2 = $client2->request(‘GET’, ‘http://exsample02.com’);
?>
 
<?php $crawler->filter(‘.table’)->eq(0)->each(function($sample) { 
  echo $sample->html(); 
}); ?>
 
<?php $crawler2->filter(‘.table’)->eq(0)->each(function($sample2) { 
  echo $sample2->html(); 
}); ?>
 
各変数名を変えるだけです。これで様々なサイトを削り取りましょう!