Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как парсить выдачу гугл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
imediasun
Отправлено: 27 Февраля, 2014 - 16:35:12
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


Друзья есть задача парсить выдачу гугла и яндекса по определенному запросу и в результате получать доменное имя и позицию и так формировать топ 100
Есть ли желающие помочь с этим за определенное вознаграждение?
Напишите в личку если есть, а в теме можете выложить свои мысли возможно ли это вообще и на основе каких алгоритмов это стоить производить
 
 Top
Мелкий Супермодератор
Отправлено: 27 Февраля, 2014 - 16:49:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Готовьте сотни проксей. В сторону curl'а можете даже не смотреть, сразу тяжёлая артиллерия в виде headless-браузера: phantomjs и подобные.
Дешевле и продуктивнее найти соответствующий сервис, в числе прочего снимающий эту метрику.

PS: как некоторым известно, у меня был таковой парсер. Был. Закрыл несколько месяцев назад.


-----
PostgreSQL DBA
 
 Top
imediasun
Отправлено: 27 Февраля, 2014 - 17:43:36
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


а гугл дает парсить или капча врубается помоему
 
 Top
Ch_chov
Отправлено: 27 Февраля, 2014 - 18:25:04
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




У яндекса есть апи, для поиска.

Мелкий пишет:
В сторону curl'а можете даже не смотреть, сразу тяжёлая артиллерия в виде headless-браузера: phantomjs и подобные

А почему, curl не подходит?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Февраля, 2014 - 18:46:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ch_chov пишет:
А почему, curl не подходит?

Слишком быстро хватает бан. Надо полнее эмулировать браузер, поведение воображаемого пользователя. Отсутствие исполнения JS - явно немаловажный фактор в оценке.


-----
PostgreSQL DBA
 
 Top
Ch_chov
Отправлено: 27 Февраля, 2014 - 18:47:48
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Так может по IP банит
 
 Top
Мелкий Супермодератор
Отправлено: 27 Февраля, 2014 - 18:54:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ch_chov, именно по ip и банит. Запросы с валидной кукой живут дальше (некоторое время). Но по куке, даже анонимного юзера, очень сильно переделывает выдачу уже через десяток запросов. В итоге - бан === крест на весь этот ip.


-----
PostgreSQL DBA
 
 Top
imediasun
Отправлено: 28 Февраля, 2014 - 11:38:16
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


А для проверки позиции сайта если использовать вот такой простой скрипт основанный на curl, будет банить или нет? как вы думаете?
PHP:
скопировать код в буфер обмена
  1.  
  2. class Google
  3.  
  4. {
  5.  
  6.         set_time_limit(0);
  7.         error_reporting(E_ALL);
  8.          
  9.         $keywords = file('search/words.txt'); //файл с ключевыми словами
  10.         $site = array('imedia.in.ua');//синонимы домена в одинарных кавычках через запятую
  11.          
  12.         foreach($keywords as $word)
  13.         {
  14.                 echo '<small><i>' . $word.'...</i></small><br>';
  15.                 $lk = getGoogleLinks(trim($word));
  16.                 foreach($lk as $n=>$url)
  17.                 //echo $url.'<br>';
  18.                         if(IsMyDomen($url, $site))
  19.                         {
  20.                                 echo '<b>Фраза: </b>' . $word . ' <b>Место: </b>' ;
  21.                                 echo colorate($n+1) ;
  22.                                 @flush();
  23.                         }
  24.         }
  25.          
  26.          function getGoogleLinks($keyword)
  27.          {
  28.                 $countPage = 100;
  29.                 $pageNum = 1;
  30.                 $url = 'http://www.google.ru/search?q=' . urlencode( $keyword) . '&num='.$countPage.'&hl=ru&start=' . $pageNum . '&ie=UTF-8';
  31.                 $page = file_get_contents($url);
  32.                 if(!$page)
  33.                         $page = curlgoogle($url);
  34.                          
  35.                 if(!$page)
  36.                 {
  37.                         echo 'Page dont downloaded<br>';
  38.                         return array();
  39.                 }
  40.                 else
  41.                 {
  42.                          
  43.                         if(preg_match_all('/<h3 class="r"><a href="(.+?)"/is', $page, $match))
  44.                                 return $match['1'];
  45.                         else
  46.                                 print('По запросу "'.$keyword.'" линков в гугле нет ?<br>');
  47.                         return array();
  48.                 }
  49.         }
  50.          
  51.         function IsMyDomen($url, $Array)
  52.         {
  53.                 $U1 = explode('/', $url);
  54.                 foreach($Array as $url2)
  55.                 {
  56.          
  57.                         if($U1['3'] == $url2)
  58.                                 return true;
  59.                 }
  60.                 return false;
  61.         }
  62.          
  63.         function colorate($int)
  64.         {
  65.                 $color = '#FF0000';  //красный
  66.                 if($int<=10)
  67.                         $color = '#008E00'; //зеленый
  68.                 if($int>10  && $int<=20)
  69.                         $color = '#FFE500'; //желтый
  70.                 return '<span style="color: ' . $color . '">' . $int . '</span><br />';
  71.         }
  72.          
  73.         function curlgoogle($url)
  74.         {
  75.                 $curl = curl_init();
  76.                 curl_setopt($curl,CURLOPT_URL,$url);
  77.                 curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
  78.                 curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
  79.                 curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,300);
  80.                 return curl_exec($curl);
  81.         }
  82.                        
  83.  
  84.  
  85. }
  86.  
 
 Top
Мелкий Супермодератор
Отправлено: 28 Февраля, 2014 - 11:50:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Будет, разумеется. Чуть менее чем сразу.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB