Está en la página 1de 8

Redbot

1
Integrantes:
Herrera, Gonzalo - 4.927.882-6
Sanguinetti, Nicols - 4.712.015-4
i!al "auregu#, $uciana - 5.147.188-8
ndice:
%ntro!ucci&n '
Soluci&n (ro(uesta 4
)ecisiones !e !ise*o 4
+rc,i-os 4
)etecci&n !e loo(s 4
.structuras 4
/or0ato !e las (ginas 4
/inal 4
1ulti lengua2e 4
3onteni!o 5
$in4s analiza!os 5
5i0eout 5
3&!igo !e esta!o 5
.6(resiones regulares 5
Soc4et 5
7ar0etros 5
.structuras !e !atos 5
1+7rocesar 5
11ails 6
11ulti$ang 6
17ozos 6
17rocesa!os 6
7gina 7
8e9erencias 8
2
Introduccin:
.l (ro:le0a (lantea!o consist;a en i0(le0entar un ro:ot !e internet, ca(az !e
recorrer (ginas <e: a (artir !e una !irecci&n inicial :uscan!o !irecciones e-0ail.
Se i0(le0ent& re!:ot (ara resol-er este (ro:le0a. 7ara =sto, !a!a una !irecci&n
inicial, re!:ot o:tiene el !ocu0ento ,t0l o ,t0 re9erencia!o #, utilizan!o e6(resiones
regulares, o:tiene !el 0is0o !irecciones e-0ail # nue-as !irecciones !e (ginas <e: (ara
recorrer.
+l e2ecutar el ro:ot se (rocesar la (gina en cuesti&n crean!o un arc,i-o lla0a!o
>1ails> ?ue conten!r las !irecciones e-0ail ?ue encuentre.
.6isten !i9erentes s<itc,es ?ue (er0itirn al usuario !eci!ir ?u= acci&n es(ec;9ica
!esea.
@stos sonA
-! A !e:ug, se i0(ri0ir in9or0aci&n !el (rocesa0iento. %nclu#e co0ienzo !e
(rocesa0iento !e ca!a B8$, (ginas (ozo reconoci!as # (ginas (ozo re(eti!as Cs&lo
si se co0:ina con -(ozosD, reconoci0iento !e !irecciones e-0ail re(eti!as, loo(s
reconoci!os, (ginas 0ultilengua2e reconoci!as Cs&lo si se co0:ina con -0ultilangD,
reconoci0iento !e lin4s Eno9ollo<F.
-!e(t, GNH A N sien!o un nI0ero natural C0 o 0a#orD, !a!a esta o(ci&n se li0itar la
(ro9un!i!a! 06i0a ?ue se !esea e6(lorar. $a B8$ inicial es consi!era!a !e
(ro9un!i!a! 0. Si es o0iti!o se asu0e (ro9un!i!a! in9inita.
-(ersistent A $a cone6i&n es con H557J1.1, !e lo contrario sern 0ensa2es H557J1.0.
-(ozos Garc,i-oH A las (ginas ?ue no tengan !irecciones a otras (ginas <e: sern
al0acena!as en el arc,i-o in!ica!o.
-0ultilang Garc,i-oH A las (ginas cu#o conteni!o sea 0ultilengua2e sern reconoci!as
e inclui!as en el arc,i-o in!ica!o.
-( GNH A N sien!o un nI0ero natural 0a#or a 1, (er0ite en-iar en (aralelo N ,ilos
Ct,rea!sD !e (rocesa0iento ?ue recorrern las (ginas <e:.
'
Solucin propuesta:
Decisiones de diseo:
Archivos:
.l (roce!i0iento >inicializar>, el cual se encuentra en las clases ?ue 0ane2an los 0ails,
(ozos # 0ultilang, se encargar !e re-isar la e6istencia !e arc,i-os (ara as;, luego !e e2ecutar
el ro:ot, no tener ele0entos re(eti!os.
.l >inicializar> !e la clase 11ails sie0(re es in-oca!o, una Inica -ez # al co0ienzo !e la
e2ecuci&n !el re!:ot, 0ientras ?ue el !e las otras !os clases Inica0ente es in-oca!o si el
s<itc, corres(on!iente 9ue selecciona!o.
.l 9unciona0iento es el 0is0o (ara las tres clases, aun?ue ca0:ia el arc,i-o ?ue se
-eri9ica. Se :usca la e6istencia !el arc,i-o >1ails>, el ?ue ,ace re9erencia a los (ozos o el !e las
(ginas !e conteni!o 0ulti lengua2e, en caso !e ?ue e6istan se los eli0ina, i0(ri0ien!o un
0ensa2e ?ue noti9i?ue este ,ec,o.
Deteccin de loops:
.l re!:ot es ca(az !e !etectar un loo( en el 0o0ento en ?ue intenta (rocesar una
(gina ?ue #a ,a si!o (rocesa!a, o sea ?ue 9ue recorri!a con anteriori!a!.
Estructuras:
)e:i!o al acceso concurrente, !e (arte !e los !istintos ,ilos !e e2ecuci&n, a las listas
?ue 0antienen las (ginas (rocesa!as o a (rocesar # a los arc,i-os ?ue contienen las (ginas
?ue son (ozos, los 0ails # las (ginas 0ulti lengua2es, se utilizan 0onitores (ara, 2usta0ente,
resguar!ar esas estructuras !e !atos # ?ue no ,a#a (ro:le0as !e concurrencia.
Formato de las pginas:
/inalA
.l 9inal !e las (ginas <e: es !etecta!o al encontrar el string EGJ,t0lHF, EGJH51$HF o
cuan!o la l;nea ?ue se le#& es igual a NB$$.
1ulti lengua2eA
7ara sa:er si el conteni!o !e una (gina es 0ulti lengua2e :asta con -eri9icar si se
cu0(le alguna !e las siguientes con!icionesA
+nalizar el ca:ezal !e H557. .n la (arte re9erente al >3ontent-$anguage> !e:e
a(arecer una lista con !os o 0s ele0entos.
+nalizar un tag !el H51$ lla0a!o >lang>, en =ste !e:e a(arecer una lista con
!os o 0s ele0entos.
4
3onteni!oA
.l re!:ot analizar las (ginas ?ue tengan conteni!o te6tJ,t0l. 7or lo ?ue se re-isar
?ue en el ca:ezal !e H557 la (arte re9erente al >3ontent-t#(e> es(eci9i?ue te6tJ,t0l.
Links analizados:
Se analizarn los lin4s cu#o atri:uto >rel> sea !i9erente a >no9ollo<>.
Timeout:
.l tie0(o !e es(era a ?ue res(on!a una (gina es !e 20 segun!os.
Cdigo de estado:
+l (rocesar una (gina se -eri9icar el ti(o !e c&!igo !e esta!o !el H557, (ara as;
i0(ri0ir la re(resentaci&n correcta !el c&!igo al utilizar el s<itc, !e !e:uger.
$as (ginas son (rocesa!as in!e(en!iente0ente !el c&!igo !e esta!o, !a!o ?ue en el
cuer(o !el H557 (ue!en a(arecer B8$s.
Expresiones regulares:
3on el 9in !e reconocer, en las (ginas na-ega!as, 0ails # lin4s se utilizan e6(resiones
regulares ?ue analizan l;nea a l;nea el c&!igo H51$. +l reconocer un lin4 a otra (gina =ste es
eli0ina!o !e la l;nea, ante la (osi:ili!a! !e ?ue ,a#an -arios lin4s o 0ails en la 0is0a l;nea. )e
ca!a lin4 se o:tiene su B8$ # (at,, (ara as; (o!er tra:a2ar con ellos !e 9or0a e9iciente.
$as e6(resiones regulares utiliza!as son las siguientesA
1ailsA [\w\.-]+(@|&#64;?)([\w*]+\.)+\w{2,4}
URL:ho[\"'](http:)?/([-a-zA-Z0-9]+\.)?[\w-\.=\?&;:#]+(\.[a-zA-Z]{2,4})*((/[\w-\.=\?&]+?)+
[(\.html?)/]?)?(\"|')
7at,A C,re9KH8./DLMNO>PJQMN<-N.LNQRSTPUCJMN<-N.LNQRPDVMCN.,t0lQDJPQCNOK>D

so de sockets:
Cada hilo genera su propio socket. Si el switch del proxy es especificado entonces usa el
mismo socket el mximo tiempo posible, si el switch especificado es el de persistencia entonces
usa el socket mientras la URL procesada sea la misma en caso contrario crea uno nuevo.
!armetros:
Los parmetros de los switches sern evaluados para ver su correctitud.
Para el switch -depth el N debe de ser un nmero natural, al igual que en el switch -p.
5
Estructuras de datos:
1 +7rocesar A
.s un 0onitor ?ue se encarga !e al0acenar !os listas (ara lograr el acceso concurrente
a ellas (or (artes !e los ,ilos.
$a lista >(ags> contiene las (ginas ?ue se !e:en (rocesar, o sea, las (ginas ?ue son
encontra!as (or el re!:ot # ?ue luego !e:ern ser recorri!as (or =ste. + 0e!i!a ?ue las
(ginas -an sien!o (rocesa!as (or los ,ilos, o sea ?ue se e2ecuta el (roce!i0iento >getSig>, las
(ginas -an sien!o eli0ina!as !e la lista. .s i0(le0enta!a co0o un +rra#$ist !on!e ca!a
ele0ento es un !atat#(e >7gina> ?ue re(resenta a la (gina encontra!a.
$a lista >reconoci!as> contiene to!as las (ginas ?ue ,an si!o encontra!as (or el ro:ot,
la !i9erencia con la otra lista es ?ue en =sta las (ginas no son eli0ina!as (ara as; no -ol-er a
(rocesar la 0is0a (gina.
.l (roce!i0iento >a!!> es el ?ue se encarga, a!e0s !e colocar la (gina encontra!a
en a0:as listas, !e -eri9icar si ,a# loo(s, =sto lo lle-a a ca:o (reguntan!o si en la lista
>reconoci!as> #a e6iste la (gina, si es as; ?uiere !ecir ?ue se encontr& un loo(.
1 1 ails A
.s un 0onitor ?ue se encarga !e al0acenar la lista >0ails>, i0(le0enta!a co0o un
+rra#$ist, ?ue contiene los 0ails (rocesa!os (or re!:ot (ara as; no tener (ro:le0as !e
concurrencia cuan!o 0s !e un ,ilo !esea guar!ar un nue-o 0ail encontra!o.
.l (roce!i0iento get se encarga !e !e-ol-er un 0ail !e la lista >0ails>, 2usta0ente
tenien!o el cuenta la sincronizaci&n entre los !istintos ,ilos. 7or su (arte, el (roce!i0iento
>a!!> se encarga !e la inserci&n !e los 0ails, si el 0ail no est en la lista entonces se lo agrega #
se lo coloca al 9inal !el arc,i-o lla0a!o >1ails>.
1 1ulti$ang A
.s un 0onitor encarga!o !e al0acenar la lista >0ultilangs>, ?ue contiene las B8$s !e
!ocu0entos ,t0l ?ue estn (u:lica!os en !i9erentes i!io0as.
.l o:2eti-o !e la lista es ?ue en el arc,i-o corres(on!iente a las (ginas 0ultilangs no
,a#an B8$s re(eti!as, (ara =sto se -eri9ica si la B8$ #a est en la lista, en caso negati-o se
escri:e en el arc,i-o.
1 7ozos A
.s un 0onitor ?ue se encarga !e al0acenar la lista >(ozos> !e 9or0a tal !e asegurar ?ue
los ,ilos consulten, concurrente0ente, si una (gina #a est en la lista, (ara as; (o!er agregarla
sin generar (ro:le0as.
7or lo tanto, la lista >(ozos> es i0(le0enta!a co0o un +rra#$ist ?ue contiene la
!irecci&n !e las (ginas ?ue tienen re9erencias entrantes (ero no salientes. $a 9unci&n !e la
6
lista es ?ue al encontrarse un (ozo se -eri9i?ue si (ertenece o no, en caso !e ?ue no se lo
intro!uce al 9inal !el arc,i-o es(ec;9ico.
17rocesa!os A
.s un 0onitor ?ue se encarga !e al0acenar la lista >(rocesa!os> ?ue contiene las
(ginas ?ue #a 9ueron (rocesa!as (or los ,ilos.
$a lista >(rocesa!os> es i0(le0enta!a co0o un Has,1a( !on!e la cla-e es la B8$
concatena!a con la (at, !e una (gina # el ele0ento es el !atat#(e >7gina> ?ue re(resenta la
(gina en cuesti&n.
+!e0s !e 0antener la lista # lograr ?ue los ,ilos entren en 9or0a concurrente, su
9unci&n es la !e sa:er ?u= (ginas ,an si!o (rocesa!as (ara ?ue no lo -uel-an a ser, es (or
=sto ?ue >(rocesa!os> es i0(le0enta!o co0o un Has,1a(.
7ginaA
.s un !atat#(e ?ue contiene !eter0ina!a in9or0aci&n !e una (gina <e: (rocesa!a
(or el ro:ot. $a in9or0aci&n es el (at,, la (ro9un!i!a! en la ?ue se encuentra # su B8$.

7
Referencias:
H557AJJes.<i4i(e!ia.orgJ<i4iJ+ne6oA3W3'WX'!igosY!eYesta!oYH557
H557AJJ<<<.<'.orgJ%nternationalJ?uestionsJ?a-H557-an!-lang
H557AJJ<<<.<'sc,ools.co0JtagsJre9YlanguageYco!es.as(
H557AJJ!ocs.oracle.co0J2a-aseJ7J!ocsJa(iJ
8