DMMスクレイピング × WordPress
DMMのアニメ声優リストから声優のカテゴリーをスクレイピング
DMMの商品ページをスクレイピングする前にカテゴリーとなる声優のリストをスクレイピングします。
一回で回せなくもないのですが、重くなってしまうことを考慮して『あ』行に絞ります。
DMM.com アニメ動画 [声優・俳優一覧: あ行 – あ]
カテゴリースクレイピングコード
スクレイピングのごく基本的な使い方、simple_html_domのタウンロードについてはこちらを参考に。
category.php
// simple_html_dom.phpファイルの読み込み include_once('simplehtmldom_1_5/simple_html_dom.php'); //スクレイピングしたいURLを指定 require_once 'MDB2.php';//ライブラリのロード //DSN $db = "mysql://DBユーザー名:パスワード@localhost/データベース名?charset=utf8"; //接続 $mdb2 =& MDB2::factory($db); //スクレイピングしたいURLを指定 $html = file_get_html('http://www.dmm.com/digital/anime/-/actor/=/keyword=a'); //○○の中のある特定の要素もCSSと同じように指定できます。 foreach($html->find('table.sect-voicelist th a') as $key => $element){ //DMMは文字コードがEUC-JPなため、文字コードをUTF-8に変換 $str = mb_convert_encoding($element, "UTF-8", "EUC-JP"); echo strip_tags($str); //タグが含まれているので、タグを排除。カテゴリーのタイトルになる $name = strip_tags($str); //URLエンコード。Wordpressにはなぜかこれが必要? $name_encode = urlencode($name); $URL = 'http://www.dmm.com'.$element->href.'view=text/'; $url = explode("=", $URL); $id = str_replace ('/view', '', $url[3]); //以下Wordpressのカテゴリーを登録するためのSQLと、その実行 $mdb2->exec("INSERT INTO `wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES ($id, '$name', '$name_encode', 0)"); //カテゴリーと、投稿記事の関連。 $mdb2->exec("INSERT INTO `wp_term_relationships` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES ($id, 2, 0)"); //カテゴリーの詳細情報 $mdb2->exec("INSERT INTO `wp_term_taxonomy` (`term_taxonomy_id`,`term_id`, `taxonomy`, `description`) VALUES ($id,$id, 'category', '{$name}の出演アニメリストです。')"); }
そして、これをWordpressをインストール完了したサーバーの閲覧可能ディレクトリ(どこでもOK)に設置してアクセスします。
例
DBに無事接続できれば、以下URLにアクセスがあるとWordpressのインストされているDBに対してカテゴリの登録があります。
http://anime.kaasan.biz/category.php