Goutte Web スクレイピング
ログインが必要な Goutte PHP ファイル
scraping-sakusibbs-getfav2.php
63Pear Villageに戻る
<?php
require 'autoload.php';
use Goutte\Client;
$top_page_url =
"https://uta.pw/sakusibbs/users.php?action=login";
$user_id = 'JS-TESTER';
$password = 'ipCU12ySxI';
// トップページにアクセス --- (*1)
$client = new Client();
$client -> setClient(
new \GuzzleHttp\Client(
array(
\GuzzleHttp\RequestOptions::VERIFY
=> false,)
));
$crawler = $client
-> request('GET',$top_page_url);
echo "ログインページを取得しました<br>";
// フォームにユーザー名とパスワードをセットして送信
$form = $crawler
-> selectButton('ログイン')
-> form();
$crawler = $client
->submit($form, array(
'username_mmlbbs6' => $user_id,
'password_mmlbbs6' => $password));
/*
ログインしたら、マイページのリンクを探す
→ [(ユーザー名)さんのマイページ]
と表示されている
*/
$mypage_url = "";
$crawler
-> filter('a')
-> each(
function($e)use(&$mypage_url) {
/*
$mypage_url は function($e) から見ると
外部変数なので use で参照(&付)渡します。
*/
$label = $e->text();
if(strpos($label, 'のマイページ') !== FALSE){
$mypage_url = $e->extract('href');
echo
"<br>My Page URL =<br>".
$mypage_url[0].
"<br><br>";
//$mypage_url[0]に格納されている
}
});
if ($mypage_url == "") {
echo 'NG:ログインできていません。';
exit;
}
echo
"ログインしました。<br>
マイページにアクセスします。<br>";
$crawler = $client
->request('GET', $mypage_url[0]);
$favlist = array();
$crawler
-> filter('ul#favlist > li')
-> each(
function($e) use (&$favlist){
$a = $e->filter('a');
$text = $a->text();
$link = "";
$o = $a -> extract(array('href'));
$link = $o[0];
$favlist[] =
$text."<br> ".$link."<br>";
});
// 結果を表示する
echo
"<br>---- 結果を表示 -----<br><br>";
echo implode($favlist);
//配列を連結する
?>