Goutte Web スクレイピング

ログインが複雑な Goutte ファイル作成

JavaScript を使用しているような複雑なログインが必要なサイトに入り スクレイピングをする Goutte ファイル
goutte-manepa-web.php
を作成します。
作成ファイル内容は、
63Pear Village に戻り
左サイドナビ「PHPlot グラフ表示」の中の
複雑なログインが必要な Goutte PHP ファイル
から見てください。
まずは、スクレイピングしたい WEB サイトの URL を設定するのですが、 ログインが必要なサイトですので、 ログイン URL
$top_page_url = "https://www.moneypartners.co.jp/login/";
を対象URLとします。
どんなログイン画面なのか取り敢えず見てみましょう。
マネパ会員ログイン
このログイン画面は、ユ-ザ名、パスワ-ド、の入力欄があって、ログインボタンがある、 見かけはオ-ソドックスな構成になっていますが、実際は JavaScript を駆使した高度な構成になっています。
FX外為取引を行うログイン画面ですので当然ながらセキュリ対策は万全といって良いでしょう。
ここにログインしてみます。
当然、ここの入力欄に入れるログインIDとパスワ-ドが必要です。
$user_id = '12345678';
$password = 'abcd12345';
のように設定します。
もちろんこれはいいかげんな ID と PASS ですのでこれではログインできません。 次の
$client = new Client();
$client->setClient(new \GuzzleHttp\Client( array(\GuzzleHttp\RequestOptions::VERIFY => false,) ));
$crawler = $client
-> request('GET',$top_page_url);
echo "ログインページを取得しました<br>";
までの内容は
単純な Goutte ファイル作成 のところで詳しく説明しました。
これで準備完了です。

フォームにユーザー名とパスワードをセットして送信

ログインが必要な Goutte ファイル作成
では、サブミットボタンがありましたので、フォームにユーザー名とパスワードをセットして submit メソッドで送信してログインしました。
でも今回はサブミットボタンがありません。
単純なフォ-ムでのログインではなく、JavaScript を組み合わせたログインフォ-ムになっているのです。
よって、submit メソッドが使えません。
それでは、フォ-ムの構造を見てみましょう。
口座番号
<input name="loginId" type="text" value="">
パスワ-ド
<input name="password" type="password" value="">
ログイン
<input name="LOGIN" class="renew2013-effect-hoverlight"
onclick="if( chkLogin()){ doLogin() } return false;"
type="image" alt="ログイン"
src="/library/login/images/login_btn_2016.png">
口座番号とパスワ-ドの input はオ-ソドックスです。
ところがサブミットボタンの代わりに input タグが使われています。
さてどうすれば良いのか?
ログイン input の中の
alt="ログイン"
に着目します。
selectButton メソッドを使って form を特定し、click メソッドでログインします。
$targetButtonText = 'ログイン';
$button = $crawler
-> selectButton($targetButtonText)
-> form();
//フォームにユーザー名とパスワードをセットして送信
$button['loginId'] = $user_id;
$button['password'] = $password;
$crawler = $client
-> click($button);
あとは、取得したマイトップページを html メソッドで表示します。
$html = $crawler -> html();
print_r($html);
echo"<br>ログイン完了、マイトップページ表示完了<br>";
これでマイトップページ入ることができました。

マイトップページのなかを動き廻りたい

ログインしたら、マイページのリンクを探して情報をスクレイピングしたいのですが、これが難しい。
ただ、単純にリンクするだけでは、JavaScript が動いてくれないのです。
どうも、セッションIDを付与してリンクしないと動かないようです。
Cookie のどの値を付与すれば良いのかもわからず、ギブアップとなりました。
わかったとしてもちょっとここには書けませんね。
ID と PASSWORD をたまたま知っているだけでは、機械的にサイト内を動き回れないような構造になっているようです。
さすが、FX外為取引をするサイトだけあってそのセキュリティ対策は頑強です。
ということで、Goutte を使えば最強のログインにも入ることができることがわかったところで終わりにしたいと思います。

引き続き複雑なスクレイピングについて説明していきます。


複雑な Goutte ファイル作成 に進む
ログインが必要な Goutte ファイル作成 に戻る

63PearVillage に戻る