Парсинг сниппетов поисковиков. Давайте объеденим усилия...

Тема в разделе "Как сделать...", создана пользователем MaxLord, 7 дек 2007.

Статус темы:
Закрыта.
  1. MaxLord

    MaxLord

    Регистр.:
    17 фев 2007
    Сообщения:
    325
    Симпатии:
    49
    Итак - цель - написать парсер сниппетов поисковиков, на php, взять как можно больше поисковиков, получить текст, вырезать из него всё лишнее и оставить массив с текстом... (например $d[0] - первое описание , $d[1] - второе и т.д.) в инете долго искал так ничё нормального и не нашёл... давайте сделаем вместе... вопросов несколько - 1. Ограничения (гугл аккурат после 50-ого запроса ставит капчу =)) - решения - прокси, или чтото другое... например я не знаю ещё не смотрел что будет если парсить сначала google.ru указав в запросе lang=ru, .com и т.д. все их сервера...
    2. Ну вобщем собрать как можно больше поисковиков в один парсер...
    С меня первая копейка - вот парсинг гугла.
    PHP:
    <?php
    set_time_limit 
    (0);
    $keys='поисковый запрос 1,поисковый запрос 2,3,и т д';
    $n 1;
    $w2  explode(","$keys);
    for(
    $z=0;$z<count($w2);$z++){
    for(
    $k=0;$k<$n$k++){
    $urla="http://www.google.com/search?q=".$w2[$z]."&num=100&hl=ru&start=".$k."00&sa=N";

    echo 
    $urla;
    for(
    $s=0$s<$n$s++){
    $file=file_get_contents($urla);
    // http://www.google.com/search?num=100&hl=en&q=%D0%B9%D1%86%D1%83%D0%BA%D0%B5%D0%BD%D0%B3%D1%88%D1%89%D0%B7%D1%85%D1%8A%D1%84%D1%8B%D0%B2%D0%B0%D0%BF%D1%80%D0%BE%D0%BB%D0%B4%D0%B6%D1%8D%D1%8F%D1%87%D1%81%D0%BC%D0%B8%D1%82%D1%8C%D0%B1%D1%8E+&btnG=Search
    $str "(([\r\n])*[\s]*)(\<br\>)?(([\r\n])*[\s]*)\<\/h2\>(.*)\<td class=\"j\"\>\<font size=-1\>(<span class=f\>(.+)\<\/span\>(.+)\<br\>)?((.*)\<br\>)?\<span class=a\>";
    //<span class=f>File Format:</span> PDF/Adobe Acrobat - <a href="http://66.102.9.104/search?q=cache:3BBrKYjA5J4J:www.zapiski.de/text%2520PDF/3/15_Retsensii.pdf+%C3%B1%C3%AB%C3%AE%C3%A2%C3%AE&hl=en&ct=clnk&cd=409&ie=UTF-8">View as HTML</a><br><span class=f><i>Your browser may not have a PDF reader available. Google recommends visiting our <a href="http://66.102.9.104/search?q=cache:3BBrKYjA5J4J:www.zapiski.de/text%2520PDF/3/15_Retsensii.pdf+%C3%B1%C3%AB%C3%AE%C3%A2%C3%AE&amp;hl=en&amp;ct=clnk&amp;cd=409&amp;ie=UTF-8">text version</a> of this document.</i></span><br>

    preg_match_all("/$str/Uis",$file,$matches);

    for (
    $i=0;$i<count($matches[10]);$i++){
    //$matches[10][$i] = preg_replace ('#<b>...<\/b><br><span class=f>File Format:<\/span> PDF/Adobe Acrobat - <a href="[\s\S]*">View as HTML<\/a><br><span class=f><i>Your browser may not have a PDF reader available. Google recommends visiting our <a href="[\s\S]*">text version<\/a> of this document.<\/i><\/span><br>#','##',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#>View as HTML</a><br><span class=f><i>Your browser may not have a PDF reader available. Google recommends visiting our <a#','##',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#View as HTML#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#File Format:#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#Microsoft Word -#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#PDF/Adobe Acrobat#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#PDF\/Adobe Acrobat#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#<a[\s\S]*a>#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#<a[\s\S]*>[\s\S]*a>#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('|<a[\s\S] *href=[\s\S]*## href=[\s\S]*>text version</a>|','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#text version#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#a href="[\s\S]*"#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#Your browser ma[\s\S]*.#','',$matches[10][$i]) ;

    $matches[10][$i] = preg_replace ('#- of this document.#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#<b>...</b>#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#of this document#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#-#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#</span>    .</i>#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#[\d]*#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#<b>#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#</b>#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#<[\w]*>#','',$matches[10][$i]) ;
    $matches[10][$i] = preg_replace ('#</[\w]*>#','',$matches[10][$i]) ;


    $d[] = $matches[10][$i];
    }

    }
    }
    }
    print_r($d);
    ?>
    Вот... может ктото скажет что громозко и т.п. - чесслово - хз, мну устраивает... значит объясняю - $n - количество страниц (по 100 результатов на страницу), $keys - слова... всё =)
    итак - что ещё надо сделать -
    yandex.ru
    rambler.ru
    mail.ru
    nigma.ru
    netoteka.ru
    liveinternet.ru
    aport.ru
    э.... ну пока что хватит.... на выходе получится тогда отличная сборка... ам? Давайте вместе делать ;)
     
  2. roddik

    roddik Колбаска

    Регистр.:
    26 янв 2007
    Сообщения:
    351
    Симпатии:
    285
    Про DOM слышал? А про XPath? SimpleXML?
    С такими вопросами - в пхп фор нубс тебе... Твоему коду до профессионального, как к луне....
     
  3. MaxLord

    MaxLord

    Регистр.:
    17 фев 2007
    Сообщения:
    325
    Симпатии:
    49
    Вот что о доме говрят мастера...
    а вообще это идея, я так понял - разбить выдачу как xml tree и просто забрать что нужно =) ... ну расскажи
     
  4. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Слушай больше "мастеров"...
    Хотя, плюсов у reg_exps тоже "больше"... сомнительно
     
  5. MaxLord

    MaxLord

    Регистр.:
    17 фев 2007
    Сообщения:
    325
    Симпатии:
    49
    У мну очень много кода с вырезаниями лишнего и т.п. только потому что когда я тестил гугл часто по разному выдачу формировал... а так можно вообще в несколько строчек обойтись, да и в тексте сделал вырез его '...' и '<'b'>' '<'/'b'>' ... хз...
     
  6. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    хз-хз... лично мне не кажется этот код профессиональным. Поэтому, надо бы перенести отсюда- никто не протифф? :smmne:
     
  7. MaxLord

    MaxLord

    Регистр.:
    17 фев 2007
    Сообщения:
    325
    Симпатии:
    49
    не надо =) Это тема не для кода, а для людей, чтоб всем вместе неписать сниффер сразу кучи поисковиков...тогда и прокси не нужны....
     
Статус темы:
Закрыта.