Просмотр полной версии : Скрипт парсер поисковика
Собственно вот решил написать такой скрипт для сбора линков на определённые кеи, форуы, гесты.... в общем что нужно то и парсим....
<?php
function gogo ($query)
{
$fileLink="c:\\outFile.txt";
$Fout=fopen($fileLink,"w+");
$query=rawurlencode($query);
$end=0;
$step=0;
while(!$end)
{
$html=file_get_contents("http://gogo.ru/web?&q=$query&sf=$step`");
$tmp=explode("width=\"90%\"><a href=\"",$html);
for ($i=1; $i<count($tmp);$i++)
{
$a=explode("\"",$tmp[$i]);
$out[]=$a[0];
fwrite($Fout,$a[0]."\n");
}
if (!eregi("Далее ",$html))
{
return $out;
}
$step=$step+10;
Print "Записано $step записей <br>";
@ob_flush();
sleep(2);
}
}
$SringQ="Killer Guestbook 0.1"; // Строка запроса
$rezult=gogo($SringQ);
?>
1) Есть такая вот проблема что когда пытаюся вывести в цикле сколько записано записей в файл то данные в браузер не попадают.... в чём может быть проблема... и как решить возможно...
2) Мне например нужно создать базу гостевух... но в поиске много мусора... типа реклам,скачать и т.д.... для отсеивания такого... какой может быть наиболее разумный способ? для отброса большего мусора можно конечно открывать сам линк и парсить его на полное сходство с запросом... будут ли ещё идеи>?
p.s: Спасибо за внимание
1)
<?php
set_time_limit(0);
function gogo($query)
{
$fileLink ="outfile.txt";
$fout = fopen($fileLink,"w+");
$query = rawurlencode($query);
$end = 0;
$step = 0;
while(!$end)
{
$html = file_get_contents("http://gogo.ru/web?&q=$query&sf=$step`");
$tmp = explode("width=\"90%\"><a href=\"",$html);
for ($i = 1; $i < count($tmp); $i++)
{
$a = explode("\"",$tmp[$i]);
$out[] = $a[0];
fwrite($fout,$a[0]."\r\n");
}
if (!eregi("Далее ",$html))
{
return $out;
}
$step = $step + 10;
echo "Записано $step записей <br>";
@ob_flush();
sleep(2);
}
}
$sringq="Killer Guestbook 0.1";
$rezult = gogo($sringq);
?>
Записывает в файл
http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml
http://www.woweb.ru/load/55-1-0-1410
http://webforus.com.ru/w/scr/?id=127
http://www.internet-technologies.ru/scripts/script_802.html
http://softobzor.ru/alfovite/script/K.html
http://www.phpclub.ru/?m=app&s=35
http://inattack.ru/program/215.html
http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
http://rasta0.fromru.com/
http://www.webrelax.com/all/19-2-2006
http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml
http://www.woweb.ru/load/55-1-0-1410
http://webforus.com.ru/w/scr/?id=127
http://www.internet-technologies.ru/scripts/script_802.html
http://softobzor.ru/alfovite/script/K.html
http://www.phpclub.ru/?m=app&s=35
http://inattack.ru/program/215.html
http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
http://rasta0.fromru.com/
http://www.webrelax.com/all/19-2-2006
http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml
http://www.woweb.ru/load/55-1-0-1410
http://webforus.com.ru/w/scr/?id=127
http://www.internet-technologies.ru/scripts/script_802.html
http://softobzor.ru/alfovite/script/K.html
http://www.phpclub.ru/?m=app&s=35
http://inattack.ru/program/215.html
http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
http://rasta0.fromru.com/
http://www.webrelax.com/all/19-2-2006
http://softsearch.ru/programs/140-553-killer-guestbook-download.shtml
http://www.woweb.ru/load/55-1-0-1410
http://webforus.com.ru/w/scr/?id=127
http://www.internet-technologies.ru/scripts/script_802.html
http://softobzor.ru/alfovite/script/K.html
http://www.phpclub.ru/?m=app&s=35
http://inattack.ru/program/215.html
http://exsoft.org/2006/05/22/print:page,1,2652_php_script.html
http://rasta0.fromru.com/
http://www.webrelax.com/all/19-2-2006
Вывел:
Записано 10 записей
Записано 20 записей
Записано 30 записей
Записано 40 записей
2) Парсить ссылки
Есть более адекватный код с использованием регэкспов, данные о выдаваемых сайтах записываются в массив, как вывести в браузер отчеты и записать инфу в файл - додумаешься сам, я думаю.
<?php
set_time_limit(0);
echo "<pre>";
function curl_getsource ( $url )
{
$curl = curl_init();
curl_setopt ( $curl, CURLOPT_URL, $url );
curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );
$source = curl_exec ( $curl );
curl_close ( $curl );
return $source;
}
function query ( $keyword, $start=0 )
{
global $max_page;
if ( $start >= $max_page )
die ( "All over" );
$keyword = trim ( $keyword );
$keyword = str_replace ( " ", "+", $keyword );
$url = "http://www.google.com/search?hl=en&q=" . $keyword . "&start=" . $start;
$source = curl_getsource ( $url );
preg_match_all ( "/\<h2\sclass\=r\>\<a\shref\=\"([^\"]+?)\"[^\>]+?\>(.+?)\<\/a\>.+?class\=\"j\"\>\<font\ssize\=\-1\>(.+?)\<br\>/is", $source, $result, PREG_SET_ORDER );
foreach ( $result as $info )
{
$link = $info[1];
$title = $info[2];
$desc = $info[3];
$links[] = array ( 'link' => $link, 'title' => $title, 'desc' => $desc );
}
print_r($links);
$start += 10;
query ( $keyword, $start );
}
$max_page = 30;
query ( 'keyword' );
?>
А прошлый код, кстати, продублировал 4 раза линки с первой страницы. Заметно даже в посте Isis.
Спасибо за помощь будем разбираться!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot