SEOノウハウ・副業ブログ・ワードプレス

検索順位チェックツールをPHPで自作する方法:サンプルコード付

2022年9月21日

検索順位チェックツールを、PHPで自作してみました。

順位チェックできるキーワードは、10個くらいなので、お試しレベルのツールです。エラー処理などは全くつけていません。

作り方やサンプルコードを紹介します。

PHPで作る自作「検索順位チェックツール」

作成した自作の検索順位チェックツールの仕組みは、下記のとおりです。

キーワードで検索した結果を取得して、phpQueryを使って順位を測定します。

処理フロー

  • チェックしたいキーワードを、ファイルから取得する
  • キーワードの検索結果を、30位まで取得する
  • 抽出した30位の中に、目的のドメインがあるかを確認する
  • ドメインがあれば、検索順位を提示、なければ、ヒットなしにする。

PHPファイルのフォルダ構成

下記のようなフォルダ構成で、ファイルをサーバーにアップロードします。

phpQueryは、「GithubのTobiaszCudnik / phpquery」を使います。

  • rank.php(検索実行ファイル)
  • rankcheck.txt(キーワードを書き込んだファイル)
  • phpQuery(TobiaszCudnik / phpqueryのphpQueryフォルダ)

各ファイルの中身を説明していきます。

rank.php

rank.phpのファイルの中身です。

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>RANKCHECK</title>
</head>
<body>
<?php

require_once(dirname(__FILE__).'/phpQuery/phpQuery.php');
//PHPエラー表示
ini_set('display_errors', 1);
error_reporting(E_ALL);

// 検索情報設定
$mysite = "/xxxxxx\.com/";
$checkfile = dirname(__FILE__).'/rankcheck.txt';

$lines = file($checkfile);

//初期化
$rankhtml = "";

foreach ($lines as $key) {

  //end文字が来たら終了
  if(trim($key)=="end") {
    break;
  }

  $string = str_replace(array(" ", " "), "+", trim($key));
  //30件取得
  $keyword = 'https://www.google.com/search?num=30&q='.$string;

  $html = file_get_contents($keyword);

  $doc = phpQuery::newDocument($html);

  $count = 1;
  $hit = false;

  foreach($doc['div.xpd'] as $row){

    $rankline = pq($row)->find('.UPmit')->text();

    //値があるかどうか
    if(!empty($rankline)) {

      //自分のリンクが含まれているかチェック
      if(preg_match($mysite,$rankline)){

        //含まれている場合は保存
        $rankhtml .= '<tr><td>'.$key."</td><td>".$count."</td></tr>";
        $hit = true;
        break;

      }

      //URLがある場合はカウントアップ
      $count++;
    }

  }

  //ヒットがない場合
  if($hit == false) {

    $rankhtml .= '<tr><td>'.$key."</td><td>ヒットなし</td></tr>";

    //リセット
    $hit = false;
  }

  //ウェイト
  sleep(1);

}

echo '<table>'.$rankhtml.'</table>';

?>
</body>
</html>

下記の部分は、自分がチェックしたいドメイン名に変えてください。

$mysite = "/xxxxxx\.com/";

まず、キーワードで検索した結果を、30位まで取得します。

$keyword = 'https://www.google.com/search?num=30&q='.$string;

phpQueryを使って、取得した結果に指定のドメインがあるかを確認し、ドメインがあればその時の順位を、なければヒットなしにします。

if(preg_match($mysite,$rankline)){

最後にreCAPTCHA対策のために、1秒待機します。

sleep(1);

rankcheck.txt

rankcheck.txtの中身です。

検索順位をチェックしたキーワードを、1行に1キーワード追加します。

読みにくい ブログ
検索ボリュームチェックツール 無料
ワードプレス レンタルサーバー
end

「end」のところまで、検索順位をチェックします。

ファイルに検索キーワードを20個追加してある場合でも、先頭5個だけチェックしたい場合は、5個目のところに「end」を追加すれば、そこで終了できます。

phpQuery

phpQueryは、「GithubのTobiaszCudnik / phpquery」を使います。composerをインストールしていなくても、ファイルをアップロードするだけで使えます。

TobiaszCudnik / phpqueryから、「Code」>「Download ZIP」をクリックして、ファイルをダウンロードします。

ダウンロードしたZIPファイルを解凍し、phpquery-masterフォルダの中にある「phpQuery」フォルダを丸ごとFTPでサーバーにアップロードします。

phpquery-masterフォルダの中にある他のファイルは使いません。

phpQueryは、「rank.php」で読み込んでいます。

require_once(dirname(__FILE__).'/phpQuery/phpQuery.php');

実行

rank.phpを実行すると、キーワードと順位が表示されます。

もし、30位内にドメインがあれば、その検索順位を表示し、なければ「ヒットなし」という表示になります。

下記の画像が、結果画面です(サンプルコードなので、CSSを全く使っていないため、見た目は、かなりしょぼい・・・)。

【まとめ】検索順位チェックツールならPHPで自作できる

お試しレベルの検索順位チェックツールなら、PHPを使って自作可能です。

キーワード10個くらいであれば、問題なくチェックできました。

ただし、以下の懸念事項があります。

  • ウェイト(sleep)をいれないと、reCAPTCHAにひっかかる
  • ウェイトが必要なので、処理に時間がかかる
  • キーワードが多くなると、うまく動かない
  • B!