Program de indexare a paginilor de Internet

Web crawler

Un program de indexare (web crawler/web spider) este un program sau un script automatizat care folosește o structură hyperlink a web-ului pentru a indexa paginile și conținutul într-o manieră metodică. Ne doream să scriem o astfel de aplicație de la 0 pentru a învăța lucruri noi.

Dacă nu ați auzit de Java, e bine de știut că este un limbaj de programare foarte popular. Specificațiile limbajului sunt libere și le puteți găsi în cartea The Java Language Specification, Third Edition. Am menționat acest aspect pentru că este important de înțeles că are cel puțin două implementări: una liberă (openjdk) și una proprietară. Pentru dezvoltare și testare noi am folosit openjdk.

Voiam să scriem un program foarte simplu care scoate poze de profil ale utilizatorilor unei rețele sociale, pornind de la un utilizator inițial, "sămânță" (seed).

Algoritmul în pseudocod

Pune în coadă seed user

while (Nu am ajuns la depășit limita de poze salvate și coada este nevidă)

{

    Extrage din coadă un utilizator

    Salvează poza de profil

    Află lista de prieteni ai acestui utilizator, printr-o cerere de tip REST

    foreach (prieten în lista de prieteni)

        Pune în coadă prieten, dacă nu i-am salvat deja poza

}

De ce am ales Java?

Pentru că putem implementa foarte rapid algoritmul de mai sus; suportul pentru comunicarea pe rețea cu serverul, prin REST este nativă (inclusă în limbaj) și există biblioteci pentru parsarea XML-ului primit de la server. Astfel codul rezultat, gheare, nu măsoară mai mult de 150 de linii.

Java este o platformă și codul Java este portabil 100%, inclusiv pe telefoane mobile. După părerea mea, numeroasele biblioteci libere sunt principalul motiv pentru care Java este atât de popular. O listă sumară:

  • MySQL - baze de date
  • JUnit, log4j - testarea și urmărirea evoluției codului
  • Hadoop, HBase, JBoss, Spring - programare distribuită
  • Eclipse, Netbeans - mediu de dezvoltare integrat; comportamentul IDE-ului se poate defini prin extensii (plugin-uri)
  • Swing, wingS - programare grafică
  • și multe alte biblioteci libere

Ce probleme am avut

Java se ocupă de managementul memoriei, printr-un mecanism de colectare a resurselor ocupate nefolosite (garbage collector), și aplicația crăpa dacă nu-i dădeam suficientă memorie: java -Xmx2048M Gheare.

Ce alternative libere există?

Foarte multe :-). Ruby și Python sunt doar câteva din numeroasele limbaje în care putem fi productivi.

Ce alternative proprietare există?

În mod cert, C# cu .NET este cea mai proprietară alternativă. Chiar nu vreau să folosesc o interfață de programare despre care nu pot afla cum este implementată. E ca și când ai folosi o mașină și nu poți umbla sub capota ei.

Rezultat

Gheare în acțiune

Sfârșit

Ceata organizează periodic ateliere de programare pe diverse tehnologii. Scopul acestor hacatoane este familiarizarea cu ultimele tehnologii și îmbunătățirea modului în care lucrăm în echipă. În acest articol am descris ce-am reușit să creăm în primul atelier, folosind Java și bibliotecile libere care extind acest limbaj.

Cam atât despre Java, dacă vreți să aflați mai multe intrați pe pagina atelierelor de programare. Așteptăm comentariile și sugestiile voastre, precum și idei pe care să le punem în practică la următorul atelier.

meniu:

taguri:

Adaugă comentariu nou

Filtered HTML

  • Adresele de situri web şi adresele de e-mail se transformă automat în linkuri.
  • Taguri HTML permiseŞ <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <sub> <sup> <small> <img>
  • Liniile şi paragrafele sunt rupte automat.

Plain text

  • Etichetele HTML nu sunt permise.
  • Adresele de situri web şi adresele de e-mail se transformă automat în linkuri.
  • Liniile şi paragrafele sunt rupte automat.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.