Simple HTML DOM ParserはPHPでHTMLのスクレイピングをjQueryライクに行うことができます。
今回はこれを使って、Macの公式サイトに掲載されている整備済みセール品情報を取得してみようと思います。
まずは以下がデモとなります。 Mac整備済み特別価格製品一覧 Bata
これはRSSなどを取得して表示しているわけではなく、
PHPでApple Storeに掲載されている情報を取得しています。
まずはこちらよりファイルをダウンロードしてきて、利用準備
中に入っているsimple_html_dom.phpをサーバーなどにアップロードしておきます。
includeなどの関数で先程アップロードしたファイルをincludeすれば使えるようになります。利用方法
早速使ってみましょう
include('../../inc/simple_html_dom.php');
$targetUrl="http://store.apple.com/jp/browse/home/specialdeals/mac/";//情報を取得するサイト
$html=file_get_html($targetUrl);//HTMLを取得します
$cont=$html->find('.producttd.specsh3a');
//find関数に商品名が入っている要素を渡します
はい、これだけでMacのセール品情報が取得できました。
行なっていることとしては、file_get_html関数に取得したいサイトのURLまたはhtmlを渡して、
返ってきた値を変数に代入。
取得したHTML内で利用したい要素をfind関数で指定して変数contに代入しています。
findに渡している要素の値を見ていただければ分かると思うのですが、
jQueryのようなセレクタで要素を抽出できるので、
慣れている人はこちらのほうが扱いやすいのではないかと思います。
今回はクラス名product > クラス名specsのtd要素 > h3要素 > a要素を取得しました。 これをパースして表示させてみましょう。
foreach($contas$key=>$element){
print('<p>'.$element->plaintext.'</p>');
}
先程の変数contをforeachで先ほど取り出したa要素を一つ一つ取り出しています。
アロー演算子でplaintextを指定することで要素のテキスト部分だけを取り出すことができます。
属性値は同じようにアロー演算子でgetAttribute('href')のようにすることで取得できます。
デモのコンテンツを作成してみましょう
functionsale_info_get($url){
$html=file_get_html($url);
$ele1=$html->find('.producttd.specsh3a');//商品名の部分
$ele2=$html->find('.producttd.purchase-infop.price');//価格の部分
$Content=array();
foreach($ele1as$key=>$element){
$href='http://store.apple.com/'.$element->getAttribute('href');
$plain=$element->plaintext;
$price=$ele2[$key]->plaintext;
$Content[]='<p><ahref="'.$href.'">'.$plain.'</a>'.$price.'</p>';
}
$Content=join("",$Content);
print$Content;
}
これで後は情報を載せたい箇所でURLを引数に関数を呼ぶだけで情報が取得できます。
例えばiPad製品の箇所は以下のようなコードを実行しています。利用法
sale_info_get("http://store.apple.com/jp/browse/home/specialdeals/ipad/");
・〇〇の部分にはmac、ipad、ipodなどを入力します。