なぜなら 私はサイトの開発とその後のプロモーションに関与しており、プロモーションされたサイトはかなりあります。すぐにYandex.Webmasterから統計を取得するプロセスを自動化する機会をつかみました。
まず、データを取得するのを忘れた場合や、毎日、1時間ごと、またはそれ以上の頻度でデータを取得する時間がなかった場合でも、すべてのデータを取得します。
次に、APIを使用して、独自のデータ表示インターフェイスを作成し、自分にとって使いやすくします。
Yandex上のこのAPIのドキュメントは存在し、例さえ提供されていますが、私は個人的に何が起こっているのかを「図で表す」ことができませんでした。 したがって、このトピックにも興味がある場合は、猫をお願いします。
Yandexに登録して、Yandex.Webmaster APIの知り合いを始めましょう。 すでに承認されている場合、「アプリケーション」を登録できます。 将来、監視するサイトを持つユーザーのトークンを受信するために必要になります。 ここで新しいアプリケーションを登録します 。
登録について少し。
- アプリケーションの名前-必要なものは何でも書きますが、ユーザーが承認のためにリダイレクトした場合、このアプリケーションは本当にあなたのものであることを理解する方が良いです。 ログインして、彼はいくつかのYandexサービスへのアクセスを許可します。
- 説明 ほとんどの場合、これはYandexのモデレーター向けのアイテムです。 さまざまなサイトのバックオフィスで、このアプリケーションを自分のニーズに使用することを書きました。
- 権利。 なぜなら すべてのYandex APIサービスの承認を統一することができ、それらはすべてリストされています。 Webmaster APIを使用するためのニーズには、「Yandex.Webmasterサービスにサイトを追加し、インデックス作成ステータスに関する情報を取得する」と「サイトへの外部リンクに関する情報を取得する(識別が必要)」が必要です。 書かれているように、2番目の項目には識別が必要です。 それについて、少し後で。 サービスをテストするだけの場合は、この機能をまだ有効にしないでください。
- アイコンへのリンクとアプリケーションへのリンクをスキップできます。
- コールバックURI。 ここでは、Yandexが承認後にユーザーを転送する先のアドレスを入力する必要があります。 トークンを受け取るのはこのアドレスです。 ところで、トークンは180日間発行されます。 頻繁に取得する必要はありません。
承認のためにユーザーを送信するURLがdomen.ru/tokenであると仮定すると、ユーザーを送信した場所からトークンを受信するために、このフィールドにこのリンクを入力します。
2番目の項目をチェックしなかった場合、アプリケーションは登録され、使用する準備ができています。
アプリケーションのリストはこちらから入手できます 。
作成されたばかりの場所に入ると、必要な「アプリケーションID」と「アプリケーションパスワード」を取得します。
リンクにすぐにアクセスすることにした場合、つまり 2番目の点に留意して、次のことを行う必要があります。
こちらからこのドキュメントをダウンロード、印刷、記入、スキャンしてwebmaster-api@yandex-team.ruに送信してください。 私の申請は4〜5日後に緩和されました。
仕事に取り掛かる。
PHPで例を挙げます。 すべてが私のために働いています。
$client_id = " Id "; $client_secret = " "; // , // state, , if (!isset($_GET["code"])) { Header("Location: https://oauth.yandex.ru/authorize?response_type=code&client_id=".$client_id); die(); } // "" , // $_Get["code"] . . // , . $result=postKeys("https://oauth.yandex.ru/token", array( 'grant_type'=> 'authorization_code', // 'code'=> $_GET["code"], // 'client_id'=>$client_id, 'client_secret'=>$client_secret ), array('Content-type: application/x-www-form-urlencoded') ); // function postKeys($url,$peremen,$headers) { $post_arr=array(); foreach ($peremen as $key=>$value) { $post_arr[]=$key."=".$value; } $data=implode('&',$post_arr); $handle=curl_init(); curl_setopt($handle, CURLOPT_URL, $url); curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_POSTFIELDS, $data); $response=curl_exec($handle); $code=curl_getinfo($handle, CURLINFO_HTTP_CODE); return array("code"=>$code,"response"=>$response); } // , 200, , if ($result["code"]==200) { $result["response"]=json_decode($result["response"],true); $token=$result["response"]["access_token"]; echo $token; }else{ echo "- ! : ".$result["code"]; } // , , , ,
トークンがあります。 これで、サイトのステータスに関する情報を取得できます。
これは、以前の情報にアクセスできなかったかのように、いくつかの段階で示します。
$token=" "; // , function get_stat($url,$headers) { $handle=curl_init(); curl_setopt($handle, CURLOPT_URL, $url); curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); $response=curl_exec($handle); $code=curl_getinfo($handle, CURLINFO_HTTP_CODE); return array("code"=>$code,"response"=>$response); } // , $result["code"] // - id . // https://webmaster.yandex.ru/api/123456789, 123456789 - id // , id $result=get_stat('https://webmaster.yandex.ru/api/me',array('Authorization: OAuth '.$token)); $user_id=str_replace('https://webmaster.yandex.ru/api/','',$result["response"]); // , . // : href="https://webmaster.yandex.ru/api/123456789/hosts, 123456789 - id // , $result=get_stat('https://webmaster.yandex.ru/api/'.$user_id.'/hosts',array('Authorization: OAuth '.$token)); $xml=new SimpleXMLElement($result["response"]); $hosts_xml=$xml->xpath("host"); $hosts=array(); foreach($hosts_xml as $host) { $hosts[(string)$host->name]= array( "name"=>(string)$host->name, "verification_state"=>(string)$host->verification->attributes()->state, "crawling_state"=>(string)$host->crawling->attributes()->state, "virused"=>(string)$host->virused, "last-access"=>(string)$host->{'last-access'}, "tcy"=>(string)$host->tcy, "url-count"=>(string)$host->{'url-count'}, "index-count"=>(string)$host->{'index-count'}, "href"=>(string)$host->attributes()->href ); } unset($hosts_xml); unset($xml); /* , Array ( [domen] => Array ( [name] => domen - [verification_state] => VERIFIED - [crawling_state] => INDEXED - [virused] => false - [last-access] => 2012-11-06T22:54:10 - [tcy] => 150 - [url-count] => 7458 - [index-count] => 6131 - [href] => https://webmaster.yandex.ru/api/id /hosts/id - ) ) */ // // xml, , , , $site_href="https://webmaster.yandex.ru/api/654321/hosts/123456"; // 654321 - user_id, 123456 - site_id $result=get_stat($site_href."/stats",array('Authorization: OAuth '.$token)); $xml=new SimpleXMLElement($result["response"]); $errors=(string)$xml->{'url-errors'}; // $internal-links=(string)$xml->{'internal-links-count'}; // $links=(string)$xml->{'links-count'}; // unset($xml);
また、URLを受け取ることで、インデックス付きページと除外ページに関する情報を取得できますが、残念ながら、データは「過去1週間」のみに与えられます。これは、データの欠如と言えます。
リクエストによりこのデータを取得できます:
$result=curlGet($site_href."/indexed",array('Authorization: OAuth '.$token)); /* : <host> <index-count>238</index-count> <last-week-index-urls> <url>http://example.com/page1.html</url> <url>http://example.com/page2.html</url> </last-week-index-urls> </host> */ $result=curlGet($site_href."/excluded",array('Authorization: OAuth '.$token)); /* : <host> <url-errors count="12"> <url-errors-with-code code=”404”> <count>12</count> <severity>ERROR</severity> </url-errors-with-code> </url-errors> </host>*/
こちらでステータスとエラー復号化をご覧ください 。
サイトへの外部リンクを介してデータを受信することもできますが、「週ごと」の期間中も可能な限り利用可能です。
$result=curlGet($site_href."/links",array('Authorization: OAuth '.$token)); /* : <host> <links-count>1436</links-count> <last-week-links> <url>http://example1.com/page1.html</url> <url>http://example2.com/page2.html</url> </last-week-links> </host>*/
また、Yandexは「一般的なクエリに関する」データも提供しますが、実際には、実際の位置と位置との間に矛盾があり、データが古くなっていることがよくあります。 それで、私はそれについてさえ気にしませんでした。
私が行う最も重要なことは、12時間ごとにすべてのサイトの統計を収集することです。 すべてのデータはデータベースに保存されるため、現在の状況を確認できるだけでなく、変更を分析することもできます。
それでも、サイト上のすべてのデータを毎回受信しないようにするには、それらのデータへのリンクをデータベースに保存することをお勧めします。 $ site_urlを意味します。 APIで突然何かが変更された場合は、これらのリンクをいつでも更新できます。
この情報がお役に立てば幸いです!
作業を自動化します。 赤テープで忙しくなればなるほど、創造性のための時間が増えます。 そして、私たちの愛する人たち!