前提・実現したいこと
phpでcURLを使ってログインが必要なページのコンテンツをスクレイピングで取得したいです。
下記ページのサンプルコードを書き換えたクラスを使用したところ、
ログイン前のページが表示されました。
https://www.tsubasa-note.blog/entry/php-curl-login/
ログイン前も後も、同じURLです。ログイン前は一部コンテンツが隠れています。
また、phpエラー等出ていればいいのですが、特にエラーが無くて、何を直せば上手くいくのかわからず困っています。
詳しい方、原因についてご教示頂ければ幸いです。
また、こういった場合にエラーを表示するにはどうしたらよいでしょうか?
該当のソースコード
php
1 2<?php 3 4class Curl 5{ 6 7 private $loginUri = 'ログイン画面のform要素のaction属性にあったURLのフルパス'; 8 private $targetUri = 'コンテンツを取得したいURL'; 9 private $tmpCookie; 10 private $user; 11 private $password; 12 13 14 public function __construct($user, $password) 15 { 16 $this->init($user, $password); 17 } 18 19 20 private function init($user, $password) 21 { 22 $this->user = $user; 23 $this->password = $password; 24 $this->tmpCookie = ABSPATH . 'wp-content/themes/以下、クッキーファイルへのパス'; 25 $this->setCookie(); 26 } 27 28 29 public function run() 30 { 31 $ch = curl_init(); 32 curl_setopt($ch, CURLOPT_URL, $this->targetUri); 33 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 34 curl_setopt($ch, CURLOPT_COOKIEFILE, $this->tmpCookie); 35 curl_setopt($ch, CURLOPT_COOKIEJAR, $this->tmpCookie); 36 $html = curl_exec($ch); 37 curl_close($ch); 38 var_dump($html); 39 } 40 41 42 private function setCookie() 43 { 44 $ch = curl_init(); 45 curl_setopt($ch, CURLOPT_URL, $this->loginUri); 46 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 47 curl_setopt($ch, CURLOPT_POST, true); 48 curl_setopt( 49 $ch, 50 CURLOPT_POSTFIELDS, 51 http_build_query( 52 array( 53 'mail' => $this->user, // input要素のname属性(メール) 54 'pass' => $this->password, // input要素のname属性(パスワード) 55 ) 56 ) 57 ); 58 curl_setopt($ch, CURLOPT_COOKIEFILE, $this->tmpCookie); 59 curl_setopt($ch, CURLOPT_COOKIEJAR, $this->tmpCookie); 60 curl_exec($ch); 61 curl_close($ch); 62 } 63} 64 65
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。