Простой парсер Я

[Удален]
718

Ребята помогите пожалуйста, ни как не могу заставить работать парсер.

<?

function geturls($html) {
$content=explode('http://', $html);
$html=preg_replace('|\<.*\>|U','',$html);
foreach($content as $i => $str){
$end=strpos($str, '"');
$tagend = strpos($str, '>');
if( $end AND ($tagend > $end OR !$tagend)){
$link=preg_replace('|(.*)/\Z|', '$1', trim(substr($str, 0, $end)));
$expr=preg_replace('|\W|', ' * ', $link);
if(preg_match('|'.preg_replace('| * |U', '.{1,10}', preg_quote($expr)).'|', $html)) $result.=$link."\n";
}
}
return $result;
}

$se='http://yandex.ru/yandsearch?rpt=rad&text=';
$srch=rawurlencode($srch);

$page[1][0]=$se.$srch;
do{
$page=str_replace('"', '', $page[1][0]);
if($page[0]=='/')
$page=substr($url,0,strrpos($url,'/')).$page;
$html=rawurldecode(file_get_contents($page));
$allurls.=geturls($html); $i++;
}

while(preg_match_all('|.*>.*href=(.+?)[">]+.*'.$i. '<|', $html , $page));

$allurls=implode('\n', array_unique(explode('\n', $allurls)));

echo $allurls;

?>
Bor-ka
На сайте с 16.11.2004
Offline
256
#1

KosoyRoman,

в таком виде он никогда не заработает.

Начинайте с $srch=rawurlencode($srch); и определения $srch, который судя по всему д.быть

$srch = urlencode('пупкин');

вот приведенный к нормальному виду код:

<?
$srch = urlencode('пупкин');
$se='http://yandex.ru/yandsearch?rpt=rad&text=';
$srch=rawurlencode($srch);

function geturls($html)
{
$result = '';

$content=explode('http://', $html);
$html=preg_replace('|\<.*\>|U','',$html);

foreach($content as $i => $str)
{

$end=strpos($str, '"');
$tagend = strpos($str, '>');
if($end AND ($tagend > $end OR !$tagend))
{
$link=preg_replace('|(.*)/\Z|', '$1', trim(substr($str, 0, $end)));
$expr=preg_replace('|\W|', ' * ', $link);

if (preg_match('|'.preg_replace('| * |U', '.{1,10}', preg_quote($expr)).'|', $html))
{
$result.=$link."\n";
}
}
}
return $result;
}

$page[1][0]=$se.$srch;

$allurls = '';
$i = 0;

do {
$page=str_replace('"', '', $page[1][0]);

if($page[0]=='/')
{
$page=substr($url,0,strrpos($url,'/')).$page;
}

$html = rawurldecode(file_get_contents($page));

$allurls .= geturls($html);

$i++;
}
while(preg_match_all('|.*>.*href=(.+?)[">]+.*'.$i. '<|', $html , $page));

$allurls=implode('\n', array_unique(explode('\n', $allurls)));

echo $allurls;
?>

дальше разбирайтесь вот с этим регулярным выражением if (preg_match('|'.preg_replace('| * |U', '.{1,10}', preg_quote($expr)).'|', $html)), т.к. желания вникать в этот говнокод просто нет.

[Удален]
#2

Bor-ka Спасибо за помощь!

KosoyRoman добавил 29.06.2008 в 18:42

Ребята не стал создавать новой темы, решил сделать xml поиск.

<?

$query=$HTTP_POST_VARS['query'];

$page="0";

$srch=array('<hlword','</hlword>');
$rplc=array('<span style="background:yellow" ','</span>');

$restricted=array();

function gettag($tag,$s) {

$ar3=array();
$ar=explode("<".$tag.">",$s);
for ($i = 1; $i < count($ar)+1; $i++) {
$ar2=explode("</".$tag.">",$ar[$i]);
$ar3[$i]=$ar2[0];

}

return $ar3;

}

echo '<?xml version="1.0" encoding="utf-8"?>';

$s=file_get_contents("http://xmlsearch.yandex.ru/xmlsearch?query=".$query."&page=".$page);

$a=gettag("group",$s);
for ($i = 1; $i < count($a); $i++) {
$url=implode(gettag("url",$a[$i]),"");
if (!in_array($url,$restricted)) {

echo "<a href='".$url."'><b>".implode(gettag("title",$a[$i]),"")."</b></a><br/>";
echo str_replace($srch,$rplc,implode(gettag("passage",$a[$i])," "));
echo "<br><font size=\"-1\"><a href='".$url."'>".$url."</a></font>";
echo "<hr noshade=\"noshade\" size=\"1\"></p>";

}

}

?>

Ребята помогите с выводом(парсенгом) колличества страниц. не могу никак сделать :(

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий