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)
{
処理
}
配列の中から文字列を検索して取得
配列を再帰的に検索して、該当する文字列がある部分を取得する方法は、こちら。
コメント