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>&emsp;".$link."<br>";
 });
// 結果を表示する
echo
 
"<br>---- 結果を表示 -----<br><br>";
echo 
implode($favlist);
//配列を連結する
?>