Навигатор сайта : Разделы Информационные технологии Получение списка ключевых слов с использованием Яндекс.Склонятор

Получение списка ключевых слов с использованием Яндекс.Склонятор

Некоторое время назад, когда я еще хуже разбирался в SEO-технологиях, подбор ключевых слов для текста я остуществлял не на основе популярных (или наоборот редких) запросов Яндекса и Google, а банальным пересчетом повторяющихся слов в тексте. Первое время делал это вручную. Потом мне надоело, и я написал скрипт подсчета количества повторяющихся слов в тексте с использованием всем известного сервиса "Яндекс.Склонятор".

 

Публикую код, как есть. Может кому-то он пригодится и Вы сможете дальше развить его.

<?php
 echo "Для получения списка ключевых слов вставьте текст в поле ниже и нажмите кнопку...";
 echo "<form target=\"_self\" href=\"index.php\" method=\"post\">
 <input type=\"hidden\" name=\"option\" value=\"com_content\">
 <input type=\"hidden\" name=\"view\" value=\"article\">
 <input type=\"hidden\" name=\"id\" value=\"52\">
 <TEXTAREA name=\"word\" rows=15 cols=70>".htmlspecialchars(trim($_REQUEST['word']),ENT_QUOTES)."</TEXTAREA><p>";

    if (array_key_exists("pvt", $_REQUEST) && ctype_digit($_POST['pvt'])) $pvt = $_POST['pvt'];
     else $pvt = 2;

 echo "Минимальное количество повторений слова: <input type=text name=\"pvt\" value=".$pvt."><p>
 <input type=\"submit\" value=\"Получить\"></form><p>";

  $stopar = array ("a","about","after","all","also","an","and","any","are","aren't","am","as","at","b","because","been","before","but","be","by","c","can","can't","could","couldn't","d","did","didn't","do","does","doesn't","don't","each","even","e","f","for","from","fax","h","had","hadn't","has","hasn't","have","haven't","he'll","he's","her","him","his","how","he","i","i'll","i'm","its","i've","if","into","isn't","it's","in","is","j","just","l","like","m","made","man","many","may","me","most","mr","much","must","my","mail","e-mail","mb","kb","n","new","not","now","o","of","on","only","or","other","our","out","over","off","p","pdf","s","she","she'll","she's","should","shouldn't","some","such","t","than","that","the","their","them","then","there","these","they","they're","they've","this","those","through","too","to","w","was","wasn't","way","we","well","we're","were","we've","what","when","where","which","who","with","won't","would","wouldn't","www","will","u","up","y","you","you're","you've","your","а","ао","аозт","б","без","безо","будто","буду","бы","был","быть","было","были","будут","будет","была","более","в","ввиду","вдруг","ведь","весь","взамен","вкратце","вкупе","вместо","вновь","во","возле","вопреки","вот","впредь","вроде","врозь","вряд","все","вслед","вследствие","всюду","всякий","вас","вам","вы","всего","где","гораздо","г","год","года","году","да","дабы","давать","даже","далее","дан","дать","для","до","должно","должный","др","другой","д","его","едва","ее","ей","ему","если","есть","ещё","еще","ею","ж","же","за","затем","зато","зачем","здесь","знать","и","из","или","им","именно","иметь","ими","иначе","иной","итак","итого","их","к","каждый","как","какой","ко","кой","когда","кое","который","кроме","кто","куда","ли","либо","лишь","ль","любой","любая","любые","мало","мимо","мочь","можно","мы","мб","кб","много","многий","многим","многие","на","надо","напр","наряду","насчет","начать","наш","не","него","ней","некто","нельзя","нем","немало","немного","немалый","немногое","нет","нечего","ни","нибудь","нигде","никак","никакой","никогда","никто","никуда","ним","ниоткуда","нисколько","них","ничего","ничей","ничто","ничуть","но","о","об","оба","обе","обо","однако","около","он","она","они","оно","опять","от","откуда","отнюдь","ото","отсюда","оттого","отчего","очень","обл","оао","зао","ооо","оф","офис","обл","по","подле","подчас","поз","позднее","позже","пока","полно","помимо","поначалу","понемногу","поскольку","после","потом","потому","почему","почти","поэтому","пр","пред","предо","прежде","прежний","при","притом","причем","про","путем","ради","раз","разве","разом","ранее","с","сам","самый","сверх","свое","свои","свой","себя","сколь","см","смочь","снова","со","собой","совсем","сразу","среди","столь","столько","та","так","также","такой","там","тем","то","тогда","того","тоже","только","том","тот","тут","у","ул","уже","факс","хотеть","хоть","хотя","чего","чей","чем","чему","через","что","чтоб","чтобы","чуть","ч","эта","этак","этакий","эти","это","этот","этого","этом","этому");
  $kw=preg_replace("#\s*[^A-Za-z0-9А-Яа-я]+\s*#siu"," ",trim($_REQUEST['word']));
  if($kw!=""){

     $kwar = array();
     $cntar = array();
     $matches = array();
     $ps=explode(" ",$kw);//преобразую строку с пробелами в массив
     echo "<div style=\"display: none;\">";
     print_r($ps);
     echo "</div>";

     for($i=0;$i<(count($ps));$i++){
        if((strlen($ps[$i])>4) && (array_search($ps[$i],$stopar) === false)){
           $cnt=1;//пока 1 развстретилось
           echo "<div style=\"display: none;\">";
           $so=fsockopen('export.yandex.ru',80,$errno,$errstr,30);// открыли соединение
           // послали GET форму (простой URL + указание вирт. хоста)
           fputs($so,'GET /inflect.xml?name='.$ps[$i].' HTTP/1.0'."\n".'HOST: export.yandex.ru'."\n\n");
           // читаем все, пока не наступит "конец заголовка" (тоесть, начало документа)
           // если наступит, то со след. байта начнется документ
           while(fgets($so,2048)!="\r\n" &&!feof($so));
           unset($buf);
           while(!feof($so)) { $buf.=fread($so,2048); }// читаем документ в переменную
             // Готово. В переменной $buf храниться скаченный документ (тоесть, файл)
             // Максимум можно читать порциями по 64K-1байт
           fclose($so);// закрываем сокет

//           $url = 'http://export.yandex.ru/inflect.xml?name='.$ps[$i];

           $matches = array_pad ($matches, 1, 0); //уменьшаю массив до 1 значения

           if (preg_match_all("#<inflection case=\"[0-9]+\">[^\<\/]+(.*)</inflection>#", $buf, $matches, PREG_PATTERN_ORDER) > 0)
           for($k=0;$k<(count($matches));$k++){
                $matches[$k] = preg_replace("/<.+?>/", "",$matches[$k]);
               }
            print_r($matches[0]);
            echo " - ".count($matches[0])." значений";
           echo "</div>";

           for($j=0;($j<count($ps));$j++){
              for($k=0;$k<(count($matches[0]));$k++){
                 if(mb_convert_case($matches[0][$k],MB_CASE_LOWER,"UTF-8")==mb_convert_case($ps[$j],MB_CASE_LOWER,"UTF-8")){
                     if ($i != $j) {
                       echo "<div style=\"display: none;\">[";
                       echo mb_convert_case($matches[0][$k],MB_CASE_LOWER,"UTF-8")."=".mb_convert_case($ps[$j],MB_CASE_LOWER,"UTF-8")."\n";
                       echo "]</div>";
                       $cnt++;
                       $ps[$j]="";
                    }
                 }
              }
           }
          array_push($kwar,mb_convert_case($ps[$i],MB_CASE_LOWER,"UTF-8"));
          array_push($cntar,$cnt);
        }
     }

     $kw = "";
     for($i=0;$i<(count($kwar));$i++){
         if ($cntar[$i] >= $pvt) {
          $kw = $kw.$kwar[$i]." ";
         }
     }
     if (strlen($kw) > 0) $kw = substr($kw,0,strlen($kw)-1);
     echo"<b>Ключевые слова:</b><p><TEXTAREA name=\"kw\" rows=15 cols=70>".$kw."</TEXTAREA>";
  }

?>
 

Добавить комментарий


Защитный код
Обновить

Счетчик определения тИЦ и PR Яндекс.Метрика

для детей старше 12 лет