PHPのスクレイピングで帝国データーバンクの企業コードを抜き出してみた
PHPでスクレイピングしてみようと思いました。PHPではしたことがなかったので(Rubyではある?TumblrのTumblarityの中身を抜き出すRubyスクリプト - めも帖)。
とりあえず、調べていくと「PHPでプログラミングをしています。 特定のHTMLファイル内にある.. - 人力検索はてな」の5番目の回答が非常に役立ちました。「Spidering hacks」は、スクレイピングするなら、読んでおけ、ということなんだと思います。
Spidering hacks―ウェブ情報ラクラク取得テクニック101選
- 作者: Kevin Hemenway,Tara Calishain,村上雅章
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2004/05
- メディア: 単行本
- 購入: 52人 クリック: 904回
- この商品を含むブログ (103件) を見る
今回、何をスクレイピングしようかというと、帝国データーバンクの企業コード(TDB企業サーチ | 帝国データバンク[TDB])です。帝国データーバンクの企業コードは、なにかと必要になることがあり、毎回、フォーム画面に入力して、コピペは面倒だと思ったので、自動的にできたらいいかも?と。
で、サンプルを見ながら実際にとりあえず動かしたのがコレです。
<?php /* スクレーピング関数群のインクルード */ include( "scrape_func.php" ); // $corporate_name = 'はてな'; $corporate_name = mb_convert_encoding($corporate_name, 'SJIS', 'auto'); $url = 'http://www.tdb.co.jp/service/u/1005.asp?page_count=1&companyName=' . urlencode($corporate_name) . '&Accord=1&address_sikugun=&freeWord='; $rawData = getURL($url); // 整理 $rawData = cleanString( $rawData ); // block指定 $rawData = getBlock('<table width="100%" cellpadding="0" cellspacing="0" class="searchResult">', '</table>', $rawData); // $rawData = explode('<tr>', $rawData); $nums = array(); for($i=2; count($rawData) > $i; $i++) { $num = getBlock('<td align="center" valign="top"', '</td>', $rawData[$i]); $name = getBlock('<p class="company">', '</p>', $rawData[$i]); $nums[] = array('num'=>$num, 'corporate_name'=>$name); } print '<a href="' . $url . '" target="_blank" >' . $corporate_name . '</a>'; var_dump($nums); ?>
意外にきれいにできて驚きました。そして、帝国データーバンクの企業データーが揺らぎをしっかり検索してくれるのも、驚きでした。