Goutte Web スクレイピング

複雑な Goutte ファイル作成

複雑な Goutte ファイル goutte-manepa-keizai.php を作成します。
作成ファイル内容は、
63Pear Village に戻り
左サイドナビ「PHPlot グラフ表示」の中の
複雑な Goutte PHP ファイル
から見てください。
以下の説明は、単純な Goutte ファイル作成のところでも行っていますが、一部再掲します。 Composerのオートロードを有効にします。
require 'autoload.php';
use Goutte\Client;
Composerのオートロードを使用せず、
require_once 'fabpot\goutte\Goutte\Client.php';
の様な書き方では残念ながら動きません。
Client.php の中で使用している各パッケ-ジ類をオートロード機能を利用して呼び出しているからのようです。
まずは、スクレイピングしたい WEB サイトの URL を設定します。
今回は、対象 URL を
$top_page_url = "https://www.moneypartners.co.jp/market/schedule/";
としました。
どんなサイトなのか取り敢えず見てみましょう。
経済指標カレンダー
このサイトは、FX に関わる経済指標が発表される日時をまとめているサイトです。
今回はこの中から、日本とオ-ストラリアに関わるものだけを抜き取って再表示してみたいと思います。

Goutte インスタンス作成

-単純な Goutte ファイル作成の説明の一部再掲- Goutte\Client のインスタンスを生成します。
$client = new Client();
とここで問題発生です。
確かに、レンタルサ-バ内ではこれでうまくいくのですが、Windows XAMPP からはうまくいかないのです。
うまく動くのは、
http://・・・・・・・・・
のサイトのみ、
https://・・・・・・・・
の SSL 認証サイトではうまく動きません。
これは Windows 環境でクライアント証明書が見つけられないために発生する問題のようです。
そこで、サーバー証明書の検証を行わないようオプションを設定をします。
Goutte HTTPS でのリクエスト SSL 証明書エラー
へ行くとその対処方法が書いてあるのですがこれが難しい。
インスタンスを作成したら、
GuzzleHttp の RequestOptions の VERIFY を false にする
すなわち、
$client->setClient(new \GuzzleHttp\Client( [\GuzzleHttp\RequestOptions::VERIFY => false,] ));
を追加しろと書いてあるのですが、これを記述すると、私が使用しているエディタ Dreamweaver CS6 では エラ表示 Syntax Error がでるのです。
エディタが古いと言われればそれまでなのですが、これがわからない。
実は、PHP5.4 以降は配列に [ ] が使えるようになったのです。
だから上記の書式は正しいのですが、私のエディタは古いのでエラ-を出していたのです。
PHP5.3 以前でも使える書式にしましょう。
$client->setClient(new \GuzzleHttp\Client( array(\GuzzleHttp\RequestOptions::VERIFY => false,) ));
これで、SSL 認証を回避することになります。
本来は危険性もあるのですが、安全であると手動で確認している WEB サイトからスクレイピングするわけですから SSL 認証をしなくても良いと個人的には思います ・・・・
ちなみに、\GuzzleHttp のなかの RequestOptions.php のなかに、RequestOptions クラスがあり VERIFY 定数は'verify'に設定されています。
クラス定数はわざわざインスタンスを作成しなくても、
クラス名::定数名
の形式でアクセスできます。
よって
\GuzzleHttp\RequestOptions::VERIFY => false
とすれば、VERIFY 定数を 'false' にすることができるのですね。
次ぎに request メソッドを使用して
$crawler = $client->request('GET', $top_page_url);
指定した URL の HTML 内容を取得します。

無名関数を使用して必要な情報を抜き出す

経済指標カレンダーページを取得しましたがここからが大変です。
まずは、
1の定数 $patern
2つの変数 $frag, $tr
2の配列 $td, $td0
を用意します。
下記に、Goutte 経済指標カレンダフロ-チャ-トを掲げます。
ここから各変数、配列、定数の使い方の概要がつかめると思います。


Goutte 経済指標カレンダフロ-チャ-ト

長くなりました。
一旦ここで切りたいと思います。
引き続き、複雑な Goutte ファイル作成その2 に進んでください。


複雑な Goutte ファイル作成その2 に進む
ログインが複雑な Goutte ファイル作成 に戻る
Goutte Web スクレイピング概要 に戻る

63PearVillage に戻る