ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

База имен и фамилий
  #1  
Старый 23.01.2010, 02:56
Аватар для Solker
Solker
Участник форума
Регистрация: 04.05.2006
Сообщений: 161
Провел на форуме:
389768

Репутация: 158
По умолчанию База имен и фамилий

Понадобилась база английских имен и фамилий. Поискал в интернете, не нашел. Набрел на сайт с более-менее приличной базой, http://www.familytree.ru/.
Заодно решил освоить curl, т.к. руки раньше не доходили.

Написал простенький парсер вменяемых (без всяких там апострофов и прочей ерести) английских имен и фамилий с сайта http://www.familytree.ru/.

PHP код:
<?php

set_time_limit
(0);
parse('dbfamily.php','family.txt');
parse('dbname.php','name.txt');

function 
parse($file_parse,$file_save)
{
    
$start 1;
    
$reg '#<a href='.str_replace('.','\.',$file_parse).'\?pos=[0-9]+>([A-z]+)</a>#';
    
    while(
true)
    {
        
$url 'http://www.familytree.ru/ru/dbf/'.$file_parse;
        
$post 'kpgdn=+%3E+&ipos='.$start;
        
$start += 201;
        
        
$ch curl_init();  
            
curl_setopt($chCURLOPT_URL$url); 
            
curl_setopt($chCURLOPT_HEADER1);
            
curl_setopt($chCURLOPT_RETURNTRANSFER1);
            if(
$cookiecurl_setopt($chCURLOPT_COOKIE$cookie);
            
curl_setopt($chCURLOPT_POST1);
            
curl_setopt($chCURLOPT_POSTFIELDS$post);
            
$res_curl curl_exec($ch);
            
curl_close($ch);
            
        
preg_match_all($reg,$res_curl,$matches);

        if(empty(
$matches[0])) break;
        else 
        {
            foreach(
$matches[1] as $val$final[] = $val;
        }

        if(
preg_match('/^Set-Cookie: (.*)/m'$res_curl$source_cookie))
            
$cookie trim($source_cookie[1]);
    }
    
    
$final_write implode(chr(10),$final);
    
file_put_contents($file_save,$final_write);
}

?>
На выходе имеем примерно 7к имен и 30к фамилий.
Забрать то, что имеем, можно по ссылке:
http://solker.spb.ru/family.zip

Для русских имен и фамилий я парсил сайт http://www.vse-familii.com/ и http://www.vse-imena.com/ соответственно.

PHP код:
<?php

set_time_limit
(0);

// Name

$url 'http://www.vse-imena.com/';
$ch curl_init();  
    
curl_setopt($chCURLOPT_URL$url); 
    
curl_setopt($chCURLOPT_HEADER0);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
$res_curl curl_exec($ch);
    
curl_close($ch);

preg_match_all('#imena-g[0-9]+\.html#',$res_curl,$female_pages);
preg_match_all('#imena-m[0-9]+\.html#',$res_curl,$male_pages);


$pre_all_pages array_merge($female_pages[0],$male_pages[0]);
$all_pages $pre_all_pages;

foreach(
$pre_all_pages as $page)
{
    
$url 'http://www.vse-imena.com/'.$page;
    
$ch curl_init();  
        
curl_setopt($chCURLOPT_URL$url); 
        
curl_setopt($chCURLOPT_HEADER0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$res_curl curl_exec($ch);
        
curl_close($ch);
        
    
$page str_replace('.html','',$page);
    
preg_match_all('#'.$page.'-[0-9]+\.html#i',$res_curl,$temp_pages);
    foreach(
$temp_pages[0] as $tmp
        if(
$tmp$all_pages[] = $tmp;
}

foreach(
$all_pages as $page)
{
    
$url 'http://www.vse-imena.com/'.$page;

    
$ch curl_init();  
        
curl_setopt($chCURLOPT_URL$url); 
        
curl_setopt($chCURLOPT_HEADER0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$res_curl curl_exec($ch);
        
curl_close($ch);
        
    
preg_match_all('#(<TD width=30% valign=top>|<br>)(.+?)(<br>|<\/td>)#i',$res_curl,$matches);
    foreach(
$matches[0] as $source_name)
    {
        
$name strip_tags($source_name);        
        if(!
$name or $name == 'Заказать вытяжка кухня') continue;
        if(
strpos($name,' ')) 
        {
            
$temp explode(' ',$name);
            
$name $temp[0];
        }
        if(
strpos($name,'.')) continue;
        if(
strlen($name) < 3) continue;
        if(
ord(substr($name,0,1)) < 192 or ord(substr($name,0,1)) > 223) continue;
        
        
$names[] = $name;
    }
}

sort($names);

$final_write implode(chr(10),$names);
file_put_contents('name_rus.txt',$final_write);

// Family

$url 'http://www.vse-familii.com/';
$ch curl_init();  
    
curl_setopt($chCURLOPT_URL$url); 
    
curl_setopt($chCURLOPT_HEADER0);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
$res_curl curl_exec($ch);
    
curl_close($ch);

preg_match_all('#familii-[0-9]+\.html#',$res_curl,$pre_all_pages);
$pre_all_pages $pre_all_pages[0];
$all_pages $pre_all_pages;

foreach(
$pre_all_pages as $page)
{
    
$url 'http://www.vse-familii.com/'.$page;
    
$ch curl_init();  
        
curl_setopt($chCURLOPT_URL$url); 
        
curl_setopt($chCURLOPT_HEADER0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$res_curl curl_exec($ch);
        
curl_close($ch);
        
    
$page str_replace('.html','',$page);
    
preg_match_all('#'.$page.'-[0-9]+\.html#i',$res_curl,$temp_pages);
    foreach(
$temp_pages[0] as $tmp
        if(
$tmp$all_pages[] = $tmp;
}

foreach(
$all_pages as $page)
{
    
$url 'http://www.vse-familii.com/'.$page;

    
$ch curl_init();  
        
curl_setopt($chCURLOPT_URL$url); 
        
curl_setopt($chCURLOPT_HEADER0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$res_curl curl_exec($ch);
        
curl_close($ch);
        
    
preg_match_all('#(<TD width=30% valign=top>|<br>)(.+?)(<br>|<\/td>)#i',$res_curl,$matches);
    
    foreach(
$matches[0] as $source_name)
    {
        
$name strip_tags($source_name);        
        if(!
$name or $name == 'Заказать вытяжка кухня') continue;
        if(
strpos($name,' ')) 
        {
            
$temp explode(' ',$name);
            
$name $temp[0];
        }

        if(
strpos($name,'.')) continue;
        if(
strlen($name) < 3) continue;
        if(
ord(substr($name,0,1)) < 192 or ord(substr($name,0,1)) > 223) continue;
        
        
$family[] = $name;
    }
}

sort($family);

$final_write implode(chr(10),$family);
file_put_contents('family_rus.txt',$final_write);

?>
На выходе получил 17к фамилий и 14к имен.
Забрать можно по ссылке:
http://solker.spb.ru/family_rus.zip

Последний раз редактировалось Solker; 23.01.2010 в 07:12..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базы для Xrumer-Бесплатные обновления! SeoTraff Услуги, Покупка и Продажа в SEO 7 12.06.2010 21:44
Как добыть Proxy самому! te$t Статьи 70 05.11.2009 11:39
У кого нибудь есть база ИМЕН ? Dr1ver Болталка 1 15.09.2009 10:14
где взять списки русских имен и фамилий для реггера? Дикс Болталка 4 21.07.2009 10:07
Одна плохая новость на всех (в продажу поступила крупнейшая база "Антикредит") -=lebed=- Мировые новости 10 15.12.2006 00:08



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ