PHPを使ってヤマトの荷物お問い合わせシステムの配達状況を一括で抜き出す
PHPよくわかんないけど、配達状況を一括で調べた時に書いたコード。
$post_value にカンマ区切りで伝票番号を入れるようにして
伝票番号を10件ごとに配達状況をとってきてます。
出力結果
3057-0638-8120,12/26,配達完了 3277-7551-6154,01/19,配達完了 3277-7568-3325,01/24,配達完了
PHPコード
<?php header("Content-type:text/html;charset=UTF-8"); mb_language('Japanese'); // POST先URL $url = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko"; // 伝票番号サンプル $post_value = '327775683325,327775516154,305706388120'; $post_value_array = explode(",", $post_value); $count = count($post_value_array); // 初期化 $num_array = array(); $get_value = ''; while ($count--) { $iii = $count % 10; array_push($num_array, $post_value_array[$count]); if (!($iii)) { $array = array( "number01" => $num_array[0], "number02" => $num_array[1], "number03" => $num_array[2], "number04" => $num_array[3], "number05" => $num_array[4], "number06" => $num_array[5], "number07" => $num_array[6], "number08" => $num_array[7], "number09" => $num_array[8], "number10" => $num_array[9] ); $http_build = http_build_query($array); // オプション $opts = array("http" => array("method" => "POST", "content" => $http_build)); $scc = stream_context_create($opts); // 読み取り $get_html = mb_convert_encoding(file_get_contents($url, false, $scc), 'UTF-8', 'auto'); // 抜き出し preg_match_all('/\(\'\ <td><font\ size=4><b>(.*?)<br><\/b><\/font><\/td>\'\)/', $get_html, $get_number); preg_match_all('/\(\'\ <td><font\ size=3>(\d+\/\d+)*<br><\/font><\/td>\'\)/', $get_html, $get_date); preg_match_all('/\(\'\ <td><font\ size=3>([^\d].*?)<br><\/font><\/td>\'\)/', $get_html, $get_status); for ($i = 0, $j = count($get_number[1]); $i < $j; $i++) { $get_value .= "{$get_number[1][$i]},{$get_date[1][$i]},{$get_status[1][$i]}\n"; } // 初期化 $num_array = array(); // 10件ごとの待機時間 sleep(5); } } echo $get_value; ?>