##goutteを利用してwebスクレイピングをしてみた
goutte初心者なので、動作確認的なphpスクリプトを作成した。
最初のフォームを取得して、その後、ログインして取得したHTMLを画面に表示させます。URLはダミーです。
#スクレイプするhtml
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>管理ログイン「管理者用」</title>
</head>
<body>
<center>
ログイン認証
<table border="0" cellpadding="2" cellspacing="1" bgcolor="#FF6600" class="f12m">
<form method="post" action="auth.php">
<tr>
<td align="center" bgcolor="#FFFFFF">PASS</td>
<td align="left" bgcolor="#FFFFFF"><input name="login_pass" type="text" value="" size="28"></td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#FFFFFF">
<input type="submit" value="ログイン"> </td>
</tr>
<input name="login_id" type="hidden" value="admin_pass">
</form>
</table>
</center>
</body>
</html>
#スクレイプコード(php)
<?php
require_once 'goutte.phar';
use Goutte\Client;
// 1Goutteオブジェクトの生成
$client = new Client();
// UserAgentを"MyCrawler 1.0"に設定
$client->setHeader('User-Agent', 'MyCrawler 1.0');
//
//テストURL管理画面(PC)
$jump_url = "http://test.com/p/admin/auth.php";
//echo "JUMP URL -> ".$jump_url."<br>";
$crawler = $client->request('GET', $jump_url);
echo "URL GET STATUS=" . $client->getResponse()->getStatus();
echo $crawler->html();
// 最初のフォームを選択する
$loginform = $crawler->filter('form')->form();
//ログインIDとパスワードを入力します
$loginform['login_id'] = 'xxxx';
$loginform['login_pass'] = 'xxxxx';
//ログインフォームにログイン
$crawler = $client->submit($loginform);
//echo "URL GET STATUS=" . $crawler->getValues();
echo $crawler->html();
//ログイン後のタイトル表示
echo $crawler->filter('title')->text();
// 「ここをクリック」をクリックしてリンク先に遷移
$client->click($crawler->selectLink('TOP')->link());
?>