Laravelのバッチ(app/Console/Commands/配下)でhtmlパース

Laravel
スポンサーリンク

Laravelのバッチ(app/Console/Commands/配下)でhtmlパースを行うソースをメモっておく。

バニラphpでできることと変わらないんだけど、Laravelのしがらみ(?)で若干書き方が違ったりする。

やり方。

以下のようにソースを書く。

        $target_url = '取得したいHTMLのURL';

        $html = file_get_contents($target_url);
        libxml_use_internal_errors(true); //エラーを無視する
        $domDocument = new DOMDocument();
        $domDocument->loadHTML($html);
        libxml_clear_errors(); //エラーをクリアする
        $xmlString = $domDocument->saveXML();
        $xmlObject = simplexml_load_string($xmlString);
        $array = json_decode(json_encode($xmlObject), true);

あとはvar_dump()とかで取得した配列の内容を見て、中身を取得する。

例)

        $array_datas = $array['body']['main']['article']['div'][0]['div']['ul'][2]['li'];

        foreach($array_datas as $array_data)
        {
                  処理
                }

配列の中から文字列を検索して取得

配列を再帰的に検索して、該当する文字列がある部分を取得する方法は、こちら

コメント