めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

PHPのスクレイピングで帝国データーバンクの企業コードを抜き出してみた

PHPスクレイピングしてみようと思いました。PHPではしたことがなかったので(Rubyではある?TumblrのTumblarityの中身を抜き出すRubyスクリプト - めも帖)。

とりあえず、調べていくと「PHPでプログラミングをしています。 特定のHTMLファイル内にある.. - 人力検索はてな」の5番目の回答が非常に役立ちました。「Spidering hacks」は、スクレイピングするなら、読んでおけ、ということなんだと思います。

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

今回、何をスクレイピングしようかというと、帝国データーバンクの企業コード(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);
?>

意外にきれいにできて驚きました。そして、帝国データーバンクの企業データーが揺らぎをしっかり検索してくれるのも、驚きでした。