top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_1052

Google検索順位取得:PHPで「Google検索の順位取得」を試してみた。こりゃまた便利なクラスライブラリを利用 ・・・ 【PHP】

 2009-07-30
さて、先日
 Googleページランクを調べるツールを創ってみた。
 ・Googleページランク取得:PHPで「Googleページランク」取得できるソースが公開されていたので試してみた ・・・ 【PHP】

 でも、本当に欲しかったのはこちら。
 ・ページランクではなく、検索したときの「順位取得」のツール。
  今回は、まず、「Google検索」のキーワード指定による
  順位取得ツールだ。


 ただし、現在、Googleの検索APIは、Ajaxものだけだから、
 PHPで行うには、通常の検索を行い、パースして調べる。
 また、量が多いと負荷も大変だし、まず100位以内でないと
 意味も無いので。


  ・100位分のデータを取得して、何番目にいるかを走査


 いつものように、左下に貼ってます。
 検索エンジンでの順位取得  - 簡易ツール - by 創ったmetaboy


 使い方
 ・http あるいは https から
  URL、調べるキーワードを入力して
  [取得!] をクリック
 ・取得したGoogle検索順位を
  数値で示す


  追記に ▼


FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎ Google検索順位を、PHPで取得 テスト
************************************************


 今回制作にあたり、非常に参考になったのが、
 ・Koichi Labs Blog さんの
 ・マッシュアップページを作ってみる その2
  基本のマニュアルだけでは理解しづらいところが、
  実際のソース例参考にさせていただいて、よくわかった。
  ありがとうございました。


 さて、まず
 ■PEAR に、XML_HTMLSax3 をインストールする。
  ※これはこの後説明する
   ・クラスライブラリ「htmlparser-1.2.1」で
    使用されているから、だ。
    (これも、Under Construction, Babyさん
     提供されているものを利用させていただく)
     ありがたいことです。


  ・PEAR でのXML_HTMLSax3組み込み
   >> Package Information: XML_HTMLSax3


pear install XML_HTMLSax3-3.0.0
 ・・・問題なく組み込まれた。

 それでは、
 ■Under Construction, Babyさん が提供されている
  クラスライブラリを取得させていただく。
   >> HTMLを整形式のXML文書に修正するPHPクラス


  ここにも詳細なサンプル例があってよくわかる。


 JavaScriptから呼び出すPHPのソースは
 ※書き方自体は
  前回の ページランク取得にあわせているが


 ■メインの Googleから検索データを取得し
  順位を取得する部分は
<?php
define('GOOGLE_DOMAIN', "www.google.co.jp");
define('TEMP_CKNUM', "100");
class siteRank{
var $sr;
function printrank($url,$strkey){
$to_url = "http://".GOOGLE_DOMAIN."/search?";
$to_url .= "num=".TEMP_CKNUM;
$to_url .= "&hl=ja";
$to_url .= "&lr=lang_ja";
$to_url .= "&q=".urlencode($strkey);
$to_url .= "&ie=euc-jp";
$to_url .= "&oe=euc-jp";
$data = file_get_contents($to_url); # DOM
$data_utf = mb_convert_encoding($data,"utf-8","auto");

require_once('*****/HTMLParser.class.php');
$parser = new HTMLParser;
$parser->setRuleFile('*****/xhtml1-transitional_dtd.inc.php');
$parser->setRoot('html', array('lang' => 'ja'));
$parser->setGenericParent('body');

$parser->parse($data_utf);
$result = $parser->dump('utf-8');
$xml = $result;

$doc = new DOMDocument("1.0","utf-8");
$doc->loadHTML($result);
$xpath = new DOMXPath($doc);
$query = "//li[@class='g']/h3[@class='r']/a[@class='l']";
$entries = $xpath->query($query);
if (!is_null($entries)) {
$temp_rank=1; $get_rank="";
foreach ($entries as $nodelist) {
if(ereg($url,$nodelist->getAttribute("href"))){ $get_rank=$temp_rank; break; }
$temp_rank++;
}
$siterank = $get_rank;
$this->sr_text($siterank);
}
}

function sr_text($siterank){
$this->sr = $siterank;
}
function get_sr(){
return trim($this->sr);
}
}
?>
 ・・・こんな感じ。
  【ポイント】
   ・サイトがEUCなので、utf-8 とのデータやりとりが
    ちょっと大変だった。
   ・HTMLParser.class.php と
    xhtml1-transitional_dtd.inc.php は、
    「htmlparser-1.2.1」に同梱されている。
   ・検索取得されたデータを
    queryするときの内容は、現在のものに合わせて
    変更した。
$query = "//li[@class='g']/h3[@class='r']/a[@class='l']";

 ■これを呼び出す、JavaScriptファイルは、
  前回の「ページランク取得」とほぼ同じだ。
  >> ご参照ください。


 取得するデータは、100に固定。
 それ以内に入らないと、調べても
 あまり意味ないしねぇ。


 現在、
 "創る" は、2位をキープしているけれど
 ほかのキーワードは(metatagで指定しているもの、ね)
 ことごとく、"未取得"(つまり、圏外)
 トホホ。


 でもねぇ。
 "ホームページ" は 圏外(未取得)なんだけど、
 "ホームページ FC2" で調べると 15位にいるんだよね。
 'ホームページ FC2' で調べると 15位にいるんだよね。
  ま、あんまり意味ないか。

 一応関連するマニュアル関係のリンクもあげておきます。
 ・php:DOMElement クラス
 ・php:DOMXPath クラス

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/1052-230c3431
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。