Google検索一位のサイトを列挙する

googletop.png
変数名とか、データベースのフィールド名とかで、アルファベットとハイフンのみで名前を作らないといけないことがあります。
一個二個だったら真面目に考えるのですが、ある数を超えるとかなり面倒になってきます。

“マクドナルド”,”ミスタードーナツ”,”モスバーガー”→”mcdonalds”,”misterdonut”,”mosburger”

こういう時、Googleに「マクドナルド」と渡せば、まず確実に”http://www.mcdonalds.co.jp/”が1位にでますから、そこからwwwとco.jpを外せば、おおよそ正しい綴りの名前を作ることが出来ますよね。残る問題は、100個あるのをいちいちGoogle検索するのか、という問題で。そんなのはコンピュータがやればいい。

というわけで、さくっと書いてみたphpスクリプト。$keywordsにある文字列をGoogle検索して、それぞれ1位の検索結果のURLをリストにして表示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Google一位検索</title>
</head>
<body>
<?php

$keywords = array(
	'マクドナルド',
	'ミスタードーナツ',
	'モスバーガー'
);

$results = array();
foreach($keywords as $keyword){
	$url = "http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=";
	$url .= urlencode($keyword);
	$html = file_get_contents($url);
	#$html = mb_convert_encoding($html,'UTF-8','UTF-8');
	 
	preg_match('/<a href="([^"]+)" class=l>/',$html,$link);
	$results[$keyword] = $link[1];
}

print "<ul>";
foreach($results as $key=>$value){
	print "<li>$key => $value</li>";
}
print "</ul>";
?>
</body>
</html>

入力した単語を変数名にするWEBサービス、とか考えたのですが、あんまり実用的じゃない気がするので、とりあえず作ってみたソースだけ公開してみます。なんかおもしろい使い途があったら自由に使っていただいて結構です。