Import des Catégories DMOZ dans eSyndicat avec SAS - eSyndiCat User Forums
eSyndiCat User Forums esyndicat directory software esyndicat support

Go Back   eSyndiCat User Forums > International > French

Reply
 
Thread Tools Display Modes
Old 03-27-2008   #1
pmadfm
01-AGF / 01-ASI
 
Join Date: Aug 2007
Location: Paris
Posts: 169
pmadfm is on a distinguished road
Default Import des Catégories DMOZ dans eSyndicat avec SAS

Bonjour,

Pour ceux qui ont la chance de pouvoir avoir accès à un ordinateur ayant accès au logiciel SAS, voici un exemple d'un programme permettant l'extraction des catégories DMOZ françaises.

Ce programme est perfectible, il à été réalisé rapidement et il est bien sur transposable dans d'autre langage de programmation.

La première chose est d'aller sur le répertoire DMOZ et de télécharger les deux fichier Structure et Content qui contiennent respectivement les catégories et les Sites Web.

Sachez enfin que seulement 210 000 sites web sont en Français et environ 24500 catégories.

Après avoir effectué ce travail vous pourrez adapter et lance ce programme :
PHP Code:
filename in "C:\Temp\content.rdf.u8";
filename in "C:\Temp\structure.rdf.u8";

data structure(dropz1 ok i index=(path /unique catmere));
 
retain path id level description title ok;
 
length description path catmere $250. title $80. id level parent_id 5;
 
infile in missover length=lg;
 
input z1 $varying256lg;
 if 
_n_=1 then do; id=-1end;

 if 
index(z1,'Topic r:id="Top/World/Français')then do;
     * 
Ce IF okpermet de prendre en compte les enregistrements sans description;
     if 
ok then link ecrit;
    
ok=1;
    
path=compress(tranwrd(scan(z1,2,'"'),'Top/World/Français/',''));
    
level=count(path,'/')+1;
 
end;
 if 
index(z1,"<d:Title>") and ok then title=tranwrd(scan(z1,3,'><'),'_',' ');
 if 
index(z1,"<d:Description>") and ok then do;
    
description=scan(z1,3,'><');
     do while ( 
index(z1,'<')=);
        
input z1 $varying256lg @;
        
description=trim(description)!!scan(z1,3,'><');
    
end;
    
link ecrit;
 
end;
return;
ecrit:
    
id+1;
    do 
i=1 to level-1;
        
catmere=trim(catmere)!!scan(path,i,'/')!!'/';
    
end
    
catmere=compress(substr(catmere,1,length(catmere)-1));
    
output
    
ok=0;
return;
run;

proc append data=structure base=st2run;

proc sql;
 
update structure a
 set parent_id
=(select id from st2 b 
                where b
.path=a.catmere);
quit
L'instruction RETAIN, est une spécificité du langage SAS, elle permet de maintenir le contenu des variables lors du chargement du PDV avec les valeurs de l'enregistrement suivant. Entendez par là la lecture du record suivant.

Ensuite vous devrez le transférer avec SAS Access par exemple dans MySQL, et vous aurez enfin le plaisir de vous amusez avec les accents.

Bon courage.

PS : Si vous souhaitez le programme pour les sites Web n'hésitez pas à le demander ;-)

Last edited by pmadfm; 03-27-2008 at 07:41 PM.
pmadfm is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 06:26 AM.


Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Testimonials | Articles | Support | Documentation | Privacy Policy | License | Affiliates | Contact Us | SEO Resources