PHP CURLで表示件数が多く複数にページに渡っているWebページの情報を取得する方法をまとめました。
基本的な部分は下記記事記載の単一Webページの場合と共通で、複数のWebページ取得に関わる部分のみ記載しています。
PHP CURLで検索条件を入力するWebページの情報を取得
1)URLのページ番号を示すURLクエリパラメータを確認
ブラウザで対象ページを閲覧し、1ページ目から数ページ分表示し、その時のURLを確認します。
例)
http://対象サイトのURL/?検索条件&page=2
上記例の場合は、ページ数がpage=2のURLクエリパラメータでページ番号を指定しています。
2)総件数を示すHTMLを確認
全ページ数を知る必要がありますが、全ページ数はWebページ上に表示されていないことがあります。商品や賃貸物件などの総件数は通常表示されるので、総件数を示すHTMLを確認します。
PHPコードで正規表現を使って抽出します。
3)全体の処理の流れ
①PHP CURLで1ページ目のWebページ取得
②正規表現で総件数を取得
③総件数を1ページあたりの表示件数で割り全ページ数を求める。
④ページ数分ループし、複数ページの情報を取得。
4)PHP CURLコードの概要
$ref = "http://example.com/main"; $target_base = "http://example.com/main/kensaku?xx&page="; $target = $target_base."1"; curl_setopt($sc, CURLOPT_URL, $target); curl_setopt($sc, CURLOPT_REFERER, $ref); $web_page = curl_exec($sc); preg_match("(・・([0-9]+)件・・)siuU", $web_page, $data_array);//全件数を取得 $total_num = $data_array[1]; $page_total = $total_num / 50 ;//1ページ当りの件数が50の場合 $page_total = ceil($page_total) ; for ( $page_num = 1; $page_num <= $page_total; $page_num++ ) { $target = $target_base.$page_num; curl_setopt($sc, CURLOPT_URL, $target); $web_page = curl_exec($sc); : :メイン処理部分 : $ref = $target;//リファラーは一つ前のページのURLを指定 curl_setopt($sc, CURLOPT_REFERER, $ref); }関連記事の目次