Недавно я писал, откуда можно взять готовую базу дмоза и что парсер ДМОЗа писать не нужно. Но учитывая размер этой базы, отдальной проблемой может быть парсинг самой базы. При попытке зачитать в память файл размером 2 гига, мой апач умирает смертью храбрых. :) Напишу как эту базу можно распарсить, прошу учесть что некоторые функции (выделены жЫрным шрифтом) надо дописать отдельно, так что это не готовый парсер, а псевдокод, но превратить его в готовый код очень легко:

function ParseDMOZ2()
{
    
$fRes GetDataFile(‘dmoz.links’‘/’); // сюда будут собираться ссылки
    
$fName GetDataFile(‘content.rdf.u8′‘/’); // это хмл файл с базой
    
$str ;
    
$pos 0;
    
$lim 1024 1024 4;
    for (
$i 0$i 1000$i++)
    {
        
$str .= flocked_read($fName$lim$pos); // (имя, сколько читать, с какой позиции)
        
$len strlen($str);
        if (
== $len)
            break;
        
$pos += $len;
        
$htt explode(‘”http://’$str);
        
$cnt count($htt);
        
$str ;
        for (
$x 1$x $cnt 1$x++)
        {
            
$tmp StripBefor(GetParamArr($htt$x), ‘”‘); // что делают функции понятно из их названия
            
$str .= “http://$tmp\r\n”;
        }
        
flocked_append($fRes$str);
        if (
$cnt)
            
$str ;
        else
            
$str GetParamArr($htt$cnt 1);
    }
}

P.S.: По партнерке RengoDating появилась интересная статья на тему работы с датинг трафом, подробно рассматривают способы работы с дейтинг трафиком и нюансы его конвертации.

Похожие посты