東京ウォーカープラスのイベント情報をPHPで抜き出すサンプルコードを書いたので…何かに使えると思ったので書いておきます。色々と試行錯誤しましたが…JSONデータがそのまま得られるならそれそのまま使うのが良さげです。東京ウォーカープラスのイベン情報は配列の中にオブジェクト(json)でscriptタグ内に収められているので…それをjson_decodeしてあげれば目的の結果を得ることができる。毎回これを実行すると東京ウォーカープラスのサイトにアクセスして負荷が増えるため、2回め以降はファイルへ書き込んでキャッシュ化する処理(2~3行目をコメントアウト)を実行するといいかと。
$data = file_get_contents("https://www.walkerplus.com/event_list/"); // file_put_contents("eventOutput.txt", $data); // $html = file_get_contents("eventOutput.txt"); $match = []; preg_match('/<script type="application\/ld\+json">([\s\S]*?)<\/script>/', $html, $match); $str = $match[1]; $ary = json_decode($str, true); var_dump($ary);
キャッシュ後のファイルをjs(node)でやるとこうなる…
const fs = require('fs'); const jsonObject = JSON.parse(fs.readFileSync('./eventOutput.txt', 'utf8')); jsonObject.forEach((obj) => { console.log(obj); });
phpのjson_decode()をあまり信用していないのでnodeのほうがましな結果になるのかな?と思いましたが…結果としてどちらでもできました。
コメント