Own products

  • 新規事業のアイディア創造機

Tutorial

htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」

この記事の読了時間:約419

  • このエントリーをはてなブックマークに追加

今週はてブでも大人気を博した記事「真面目にエロサイトを作ってみた【プログラマ編】|ASTRODEO」や、IDEA*IDEAさんでも紹介されていた、PHPHTMLparseするライブラリ「htmlSQL」ですが、解析するHTMLを指定するにはSQLちっくな書き方をするので、SQL自体に触れる機会の少ない方には手を出しにくいシロモノです。

SQLわかんないです>< もっとカンタンにparseしたいぉ☆ってゆー方に全力でゴリ押ししたいのが、今回紹介するMITライセンスのPHPライブラリPHP Simple HTML DOM Parser」です!

PHP5で書かれたこの「PHP Simple HTML DOM Parser」の最大の特徴は、解析したいHTMLをセレクタで指定できるってトコ。そう、まるでjQueryのように。

そんなワケで今回のエントリーは、jQueryみたいにセレクタでHTMLparseできるお手軽PHPライブラリPHP Simple HTML DOM Parser」のご紹介です。

セレクタでHTMLをparseする「PHP Simple HTML DOM Parser」

1.使用するための準備

まずは今回の主人公を狩りに行きましょう。

SourceForge.netの「PHP Simple HTML DOM Parserページ」に行き、緑色のDownloadボタンをクリックすれば自動でダウンロードが開始されます。

落としたフォルダ内の「simple_html_dom.php」ってのが主人公の彼で、他は全部サンプルとかマニュアルとかのファイルになります。

なので、実際に使う際はこの「simple_html_dom.php」だけをアップロードしてください。

2.全体的な基本設定と使用方法

例えば、mixiのトップページにあるロゴ画像を取得したい場合は、下記のように書きます。

<?php
include('../simple_html_dom.php');
$html = file_get_html('http://mixi.jp/home.pl');

foreach($html->find('#headerArea h1 a img') as $e) 
    echo $e->outertext;
?>

いやー、なんてjQuery。

2行目でsimple_html_dom.phpを読み込み、3行目で取得したいページのURLを記述します。

で、5行目のfind()の中に、jQueryのような感じで「取得したい部分」を記述します。

あとは6行目で取得する範囲を「outertext」ってカタチで選んでいます。

取得する範囲の指定は、innertext(”取得したい部分”を含まない)、outertext(”取得したい部分”を含む)、plaintext(”取得したい部分”のテキストだけを取得する)といった感じで指定してきます。

例えば下記のように記述すれば、Yahoo画像検索の結果を抽出するコトも余裕で可能です。

<?php
include('../simple_html_dom.php');
$html = file_get_html('http://image-search.yahoo.co.jp/search?ei=UTF-8&fr=top_ga1_sa&p=sexy');

foreach($html->find('#yschres .grid img') as $e) 
    echo $e->outertext;
?>

ね?ヤバくね?

3.全体的な基本設定と使用方法

他にも詳しい説明や使い方などは、PHP Simple HTML DOM Parserマニュアルページにてご確認下さい。

idやclassは”div[id=○○○]”みたいな書き方での指定もできるみたいですし、「取得したい部分」のタグ自体を取り出すコトもできるみたいです。

4.最後に

コレを上手に使えば、結構いろんなWEBサービスのネタをカタチにできるんじゃないでしょーか。

現在進行中のプロジェクトですので、もしバグ等を発見した場合はぜひ報告して、より良い未来を築き上げていこうじゃありませんか諸君!

なにはともあれ、このような偉大なライブラリの作者方にご加護と栄光あれ!

PHP Simple HTML DOM Parser

最初htmlSQLを調べてた時、SNOOPYってライセンスGPLじゃん!って思ってアタフタしましたが、どーもhtmlSQLに同梱されてる”snoopy.class.php”ってのはLGPLみたいですね。

それなら外部ライブラリとして使用するには問題なく使えますから、htmlSQLがBSDライセンスってのも合点がつきました。

いやー、ライセンスってムズカシイ。

  • このエントリーをはてなブックマークに追加

コメントを投稿する

お名前

ご連絡先メールアドレス※非公開

コメント

CAPTCHA


  • このブログのRSSを購読する
  • このブログをtwitterでつぶやく
  • このブログをFacebookで共有する
  • このブログをはてなブックマークで共有する

Contact

    お名前※必須

    ご連絡先メールアドレス

    お問い合わせ内容※必須

    CAPTCHA

    captcha

    Blog parts

    Affiliate