PDA

Просмотр полной версии : Скрипт парсер поисковика


LolFEm
24.06.2007, 22:48
Собственно вот решил написать такой скрипт для сбора линков на определённые кеи, форуы, гесты.... в общем что нужно то и парсим....


<?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("Далее&nbsp;",$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: Спасибо за внимание

Isis
24.06.2007, 23:32
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("Далее&nbsp;",$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) Парсить ссылки

hhover
25.06.2007, 01:33
Есть более адекватный код с использованием регэкспов, данные о выдаваемых сайтах записываются в массив, как вывести в браузер отчеты и записать инфу в файл - додумаешься сам, я думаю.
<?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.

LolFEm
26.06.2007, 14:33
Спасибо за помощь будем разбираться!