За последние 24 часа нас посетили 15533 программиста и 1490 роботов. Сейчас ищут 909 программистов ...

парсер google

Тема в разделе "Прочие вопросы по PHP", создана пользователем Grid12, 21 май 2013.

  1. Grid12

    Grid12 Активный пользователь

    С нами с:
    27 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    Всем доброго вечера!
    Возможно буду писать фигню, но разобраться самому быстро в этом не получиться.
    Задание. Необходимо разработать скрипт парсинга HTML поисковой страницы Google. Скрипт должен получить на вход два параметра «Имя домена» (например «domainname.com») и «Ключевое слово» (например «Кролики»), отправить поисковый запрос на сервер Google, и в полученном ответе искать ссылку на «Имя домена».
    Впервые столкнулся с парсингом и стал использовать PHP Simple HTML DOM Parser. с обычных страниц(статей) инфо можно считывать. а вот как быть с гуглом???? возможно сделать через эту библиотеку или может надо использовать curl.
    Кто может помогите советом в какую степь двигаться. желательно чтобы решение было найлегчайшим! Усложнять потом буду.
    Спасибо.
    P.s. кстати забыл сказать, что нельзя использовать «Google Web Search API» и «Google Custom Search API». вдруг туда отправите.

    Ладно. Вижу, что желающих помочь пока мало.

    Вопрос следующий: а какие функции php нужно использовать, чтобы задав запрос из формы в поисковик google мне как в гугле выдались поисковые ответы.
    Например, задал в форме "php" - выдались сайты с php.

    НУ помогите пожалуйста советом. мне же не нужен от Вас полный код программы.
    Ещё раз спасибо
     
  2. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    вообще рекомендую идти на фриланс.
    есть у меня товарищ парсер еще тот ;) хорошие портфолио и отзывы. если надо пишите в личку.
     
  3. Grid12

    Grid12 Активный пользователь

    С нами с:
    27 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    Прям помог так помог.
    Ладно может по другому кто поможет.

    Страницу гугла я получил с помощью:
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4.     <title>Parser Google</title>
    5.     <style type="text/css">
    6.     body {
    7.         background-color: #DDDDDD;
    8.         font-family: "Trebuchet MS", Arial, sans-serif;
    9.     }
    10.     h1, h2 {
    11.         font-family: serif;
    12.         text-align: center;
    13.     }
    14.     #page {
    15.         background-color: #FFFFFF;
    16.         border: 2px solid #AAAAAA;
    17.         margin: 0 auto;
    18.         padding: 20px;
    19.         width: 80%;
    20.     }
    21.     div.error {
    22.         border: 1px solid #AA0000;
    23.         background-color: #FFAAAA;
    24.         padding: 5px;
    25.     }
    26.     .google {
    27.         font-size: 1.2em;
    28.     }
    29.     </style>
    30. </head>
    31. <body>
    32. <div id="page">
    33. <h1><span class="google"><span style="color:#184DC6">К</span><span style="color:#C61800">р</span><span style="color:#EFBA00">и</span><span style="color:#184DC6">в</span><span style="color:#31B639">о</span><span style="color:#C61800">й</span> <span style="color:#184DC6">П</span><span style="color:#C61800">а</span><span style="color:#EFBA00">р</span><span style="color:#184DC6">с</span><span style="color:#31B639">е</span><span style="color:#C61800">р</span> <span style="color:#184DC6">G</span><span style="color:#C61800">o</span><span style="color:#EFBA00">o</span><span style="color:#184DC6">g</span><span style="color:#31B639">l</span><span style="color:#C61800">e</span></span></h1>
    34. <form action="">
    35. <table align="center" cellpadding="4">
    36.     <tr>
    37.         <td>
    38.             <span  title="Слово которое ввводим для поиска">Поисковое слово</span>
    39.         </td>
    40.         <td>
    41.             <input type="text" name="keyword" value="">
    42.         </td>
    43.     </tr>
    44.    <tr>
    45.         <td align="center" colspan="2">
    46.             <input type="submit" name="submit" value="Начать">
    47.         </td>
    48.     </tr>
    49. </table>
    50. </form>
    51. <?php
    52. if(isset($_GET['submit']))
    53.    
    54.    
    55.     $keyword = $_GET['keyword'];
    56.     $ch = curl_init();
    57. //Указываем URL, куда будем обращаться. Протокол http://
    58.     curl_setopt($ch, CURLOPT_URL, "http://www.google.com/search?num=2&hl=ru&q=$keyword");
    59.     curl_setopt($ch, CURLOPT_HEADER, false);
    60.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
    61.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    62.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    63.     $data =  curl_exec($ch);
    64.     //echo $data;
    65.     curl_close($ch);
    66. ?>
    67.  
    68. </body>
    69. </html>


    А код парсера(не сильно хороший, но рабочий проверено на других страницах) выглядит так:
    Код (Text):
    1.  
    2. <?php
    3. include('simple_html_dom.php');
    4. $domains = array();
    5. pagePars('http://localhost/pars/pars1.php');
    6. function pagePars($page)
    7. {
    8.     global $domains;
    9.     $html = new simple_html_dom();
    10.     $html->load_file($page);
    11.     $items = $html->find('div[class=kv]');  
    12.     foreach($items as $post) {
    13.         $domains[] = array($post->children(0)->outertext);
    14.     }
    15.     # посмотрим, есть ли следующая страница
    16.     #if($next = $html->find('a[class=nextpostslink]', 0)) {
    17.      #   $URL = $next->href;
    18.         # echo "going on to $URL <<<\n";
    19.         # подчищаем утечки памяти
    20.         $html->clear();
    21.         unset($html);
    22.     }
    23. ?>


    Мне надо чтобы первая часть сделала запрос на слово, а вторая часть взяла эту страницу которую нашла первая, как я думаю она теперь будет в моём пхпфайле который я запускаю и провела по ней парсинг.
    Вроде по отдельности всё работает а в купе нет.
    Соединяю вместе и сразу виснет денвер.
    Такое ощущение , что или что-то зацикливается или я не знаю.


    ПОМОГИТЕ
     
  4. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    не знаю как гугл, яндекс такие вещи почти сразу пресекает, не любят они когда их парсят и подставляют каптчу или еще какую левую бяку, которую вы не видите. потому и смысла нет в этих скриптах, поэтому кто знает как это сделать, сидят и помалкивают. php не поддерживает многопоточность.

    simple_html_dom.php - это видимо класс для парсинга.
    http://localhost/pars/pars1.php - это видимо страница содержащая выдачу гугла.

    может имеет смысл получить выдачу и полученное сохранить в файл, а потом тренироваться сколько влезет.
     
  5. Grid12

    Grid12 Активный пользователь

    С нами с:
    27 фев 2012
    Сообщения:
    28
    Симпатии:
    0
    Спасибо.
    Направление задано.
    Можете тему закрывать!!!
    всё равно больше помощи наверное не будет(((