- Автор темы
- #1
Итак - цель - написать парсер сниппетов поисковиков, на php, взять как можно больше поисковиков, получить текст, вырезать из него всё лишнее и оставить массив с текстом... (например $d[0] - первое описание , $d[1] - второе и т.д.) в инете долго искал так ничё нормального и не нашёл... давайте сделаем вместе... вопросов несколько - 1. Ограничения (гугл аккурат после 50-ого запроса ставит капчу =)) - решения - прокси, или чтото другое... например я не знаю ещё не смотрел что будет если парсить сначала google.ru указав в запросе lang=ru, .com и т.д. все их сервера...
2. Ну вобщем собрать как можно больше поисковиков в один парсер...
С меня первая копейка - вот парсинг гугла.
Вот... может ктото скажет что громозко и т.п. - чесслово - хз, мну устраивает... значит объясняю - $n - количество страниц (по 100 результатов на страницу), $keys - слова... всё =)
итак - что ещё надо сделать -
yandex.ru
rambler.ru
mail.ru
nigma.ru
netoteka.ru
liveinternet.ru
aport.ru
э.... ну пока что хватит.... на выходе получится тогда отличная сборка... ам? Давайте вместе делать
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&hl=en&ct=clnk&cd=409&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);
?>
итак - что ещё надо сделать -
yandex.ru
rambler.ru
mail.ru
nigma.ru
netoteka.ru
liveinternet.ru
aport.ru
э.... ну пока что хватит.... на выходе получится тогда отличная сборка... ам? Давайте вместе делать