powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Позиция в Yandex
5 сообщений из 5, страница 1 из 1
Позиция в Yandex
    #38537969
Возникла идея получать через PHP позицию сайта в Yandex-е по тому или иному запросу.
Есть идеи?

Можно ли через php, открыть yandex, вбить запрос и нажать "поиск", а зачет пробежаться по страничкам, пока не появится имя сайта моего?

В каком направлении искать?
...
Рейтинг: 0 / 0
Позиция в Yandex
    #38537970
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
curl.

чаще раза в минуту не опрашивать - ато забанит
...
Рейтинг: 0 / 0
Позиция в Yandex
    #38537979
ScareCrow,

посмотрела в википедии, не совсем понятно, а как это внедрить на мою php страничку?
Не могли бы вы дать код? Спасибо!
...
Рейтинг: 0 / 0
Позиция в Yandex
    #38537981
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгения ЧупроваВозникла идея получать через PHP позицию сайта в Yandex-е по тому или иному запросу.
Есть идеи?

Можно ли через php, открыть yandex, вбить запрос и нажать "поиск", а зачет пробежаться по страничкам, пока не появится имя сайта моего?

В каком направлении искать?

Ещё одно задание?

Если нет, то на практике мало кто бегает по поисковикам своими силами, а чаще прибегают к помощи специализированных сервисов (у которых работают полноценные роботы).

Вот как например на нашем сайте это делается:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
  //сбор позиций в выдаче Яндекса и Гугла (через megaindex.ru)
  public function actionGetYandexGooglePlace($myMail, $myPass){
    $curl = curl_init('http://www.megaindex.ru/login.php?action=process');
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies');
    curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookies');
    curl_setopt($curl, CURLOPT_POSTFIELDS, "email_address={$myMail}&password={$myPass}&login_memo=1");
    
    curl_exec($curl);//логинимся
    if(curl_errno($curl) != 0){   
      echo 'Q1: Ошибка CURL: '.curl_error($curl);  
      return;
    }

    curl_setopt($curl, CURLOPT_URL, 'www.megaindex.ru/index.php?tab=mySite');
    $text = curl_exec($curl);//читаем список сайтов
    if(curl_errno($curl) != 0){   
      echo 'Q2: Ошибка CURL: '.curl_error($curl);  
      return;
    }

    $text = iconv("CP1251", "UTF-8", $text);
    preg_match_all('#<a title="Перейти на сайт"[^>]*>([^<]*)</a>.*?<a href=".*?&site_id=([^&"]*)[^"]*"#ims', $text, $sites_array, PREG_SET_ORDER);
    $sites = array();
    foreach($sites_array as $site){
      $sites[$site[1]]=$site[2];
    }
    $sites = array_reverse($sites, true);

    //читаем данные по сайтам
    foreach($sites as $site=>$site_id){
      curl_setopt($curl, CURLOPT_URL, "http://www.megaindex.ru/index.php?tab=aSeo&do=aseoWord&site_id={$site_id}");
      $text = curl_exec($curl);
      if(curl_errno($curl) != 0){   
        echo 'Q3: Ошибка CURL: '.curl_error($curl);  
        return;
      }

      //парсим данные по сайтам
      $res_queries = array();
      $text = iconv("CP1251", "UTF-8", $text);
      $text = preg_replace('#<script[^>]*>.*?</script>#ims', '', $text);
      $text = preg_replace('#<style[^>]*>.*?</style>#ims', '', $text);
      if(preg_match('#<table class=s0p0>(.*)<input type=submit class=submit#ims', $text, $matches)){
        $res = $matches[1];
        do{
          $before_res=$res;
          $res = preg_replace(
            array(
              '#<table[^>]*>.*?</table>#ims',
              '#<input[^>]*>#ims',
              '#<img[^>]*>#ims',
              '#<br[^>]*>#ims',
              '#<a[^>]*>(.*?)</a>#ims',
              '#<span[^>]*>(.*?)</span>#ims',
              '#<div[^>]*>(.*?)</div>#ims',
              '#<b[^>]*>(.*?)</b>#ims',
              "#\\t#ims",
              "#\\r\\n(\\r\\n)+#ims",
              "#&nbsp;#ims"
            ), array('', '', '', '', '\\1', '\\1', '\\1', '\\1', '', "\n", ''), $before_res);
        }while($before_res!=$res);
        if(preg_match_all('#<tr[^>]*>(.*?)</tr>#ims', $res, $rows)){
          $res_rows = array_slice($rows[1], 2, -4);
          $time = time();
          foreach($res_rows as $row){
            if(preg_match_all('#<td[^>]*>(.*?)</td>#ims', $row, $colls)){
              $res_colls = $colls[1];
              $yandex = intval($res_colls[4]);
              $google = intval($res_colls[5]);
              $res_queries[]=array(
                'site'=>$site,
                'query'=>trim($res_colls[1]),
                'yandex'=>($yandex!=0 ? $yandex : 1000),
                'google'=>($google!=0 ? $google : 1000),
                'time'=>$time
              );
            }
          }
        }else{
          echo "error (could not find rows)\n";
        }
      }else{
        echo "error (could not find table)\n";
      }
      //пишем данные в базу
      foreach($res_queries as $row_properties){
        $row = new YandexGoogle;
        $row->setAttributes($row_properties);
        $row->save();
      }
      echo "$site - saved\n";
      sleep(1);
    }
    curl_close($curl);
    echo "done\n";
  }



Соответственно регистрируемся на сервере, забиваем список сайтов для отслеживания... и стягиваем оттуда нужные нам позиции (посредством парсинга страниц, уже программно).

У нас это всё стоит на кроне, что бы не задалбывать сервак (раз в несколько часов происходит парсинг сайта и обновление локальной базы)... при такой схеме нас никто не банет (да и не за чем), а мы владеем актуальными данными (ну или почти актуальными, но в данном случае задержка в час-два роли не играет)
...
Рейтинг: 0 / 0
Позиция в Yandex
    #38538210
Програмёр,
Ой, спасибо большое. Буду пробовать!
Если только с LInux-ом разберусь. А то я вчера какой-то сервис "отрубила" случайно )))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Позиция в Yandex
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]