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

Статус
В этой теме нельзя размещать новые ответы.

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
э.... ну пока что хватит.... на выходе получится тогда отличная сборка... ам? Давайте вместе делать ;)
 
Про DOM слышал? А про XPath? SimpleXML?
С такими вопросами - в пхп фор нубс тебе... Твоему коду до профессионального, как к луне....
 
Вот что о доме говрят мастера...
1. DOM - ***но. По крайней мере, его реализация в PHP.
2. DOM - ещё недоделанный, но уже несколько раз переделанный продукт. Пользоваться DOM категорически нельзя.
3. DOM для обработки XML абсолютно непригоден.
4. В DOM самая простенькая операция дампа узла превращается в геморрой на пол-дня.
5. Из-за этого #$%^&* DOM целая неделя работы коту под хвост
6. Ну что, что мешало мне неделю назад взять простенький xml2tree Билла Софтки и забыть DOM, как страшный сон?
а вообще это идея, я так понял - разбить выдачу как xml tree и просто забрать что нужно =) ... ну расскажи
 
Слушай больше "мастеров"...
Хотя, плюсов у reg_exps тоже "больше"... сомнительно
 
У мну очень много кода с вырезаниями лишнего и т.п. только потому что когда я тестил гугл часто по разному выдачу формировал... а так можно вообще в несколько строчек обойтись, да и в тексте сделал вырез его '...' и '<'b'>' '<'/'b'>' ... хз...
 
хз-хз... лично мне не кажется этот код профессиональным. Поэтому, надо бы перенести отсюда- никто не протифф? :smmne:
 
не надо =) Это тема не для кода, а для людей, чтоб всем вместе неписать сниффер сразу кучи поисковиков...тогда и прокси не нужны....
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху