検索順位チェックツールを、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にひっかかる
- ウェイトが必要なので、処理に時間がかかる
- キーワードが多くなると、うまく動かない