sâmbătă, 15 martie 2008

Harta blogosferei -- detalii tehnice

După cum unii bănuiesc, nu am făcut harta blogosferei cu copy and paste şi Illustrator. Ar fi durat cam mult, zelistul are peste 4000 de bloguri, iar targetit are peste 12000.

Iată cum am făcut:

1. Cu Offline Explorer (un site-downloader, din 2002) am downloadat tot zelist.ro şi blogrank.targetit.ro.

Am obţinut 4400+ de fişiere html pentru zelist, 12000+ pentru targetit, în jur de 100 mega fiecare.

2. În Yahoo! Widget engine (Konfabulator) am scris cod javascript pentru:

2.1 pentru scrape-uit site-urile downloadate. Adică am luat fiecare fişier, l-am citit şi am extras informaţiile din el într-o...

2.2 ...bază de date SQLite. Konfabulator vine cu un engine SQLite.

2.3 tot în Konfabulator e scris codul care interoghează bazele de datele, conform diferitelor condiţii, şi scrie rezultatele în format .graphml (xml).

3. Fişieriele graphml le deschid cu yEd, un editor de grafuri FOARTE performant.

4. În yEd graphurile sunt aranjate după diverşi algoritmi.

5. Odată aranjate, grafurile sunt exportate ca .bmp, .bmp-uri care sunt salvate .jpg în photoshop.

Codul e extrem de simplu, orice script kiddie ar fi putut scrie cele 300 de linii de cod; lucrurile cu adevărat complicate sunt făcute de yEd.


Amândouă agregatoarele (i.e. zelistul şi targetit) arată ce bloguri linkuiesc SPRE un alt blog, dar nu invers. Cum ar veni, sunt liste cu blogurile ce linkuiesc spre zoso, dar nu şi lista cu blogurile spre care linkuieşte zoso (adică blogrollul lui zoso).

Din fericire, această informaţie se poate extrage uşor.

Astfel, au rezultat următoarele baze de date, care pot fi downloadate:

1. Baza de date zelist

2. Baza de date zelist inversată, cu blogrolluri.

3. Baza de date targetit.

4. Baza de date targetit inversată.


Ele conţin următoarele câmpuri:

id int(11), name varchar(255), rank int(11), incominglinks varchar(255)

Id-ul nu contează, iar rank-ul s-ar putea să fie varchar. Nu contează, SQLite iartă.

Incominglinks e şi în b. de date inversată, pentru simplificare.


Cine vrea să facă aplicaţii mai frumoase cu ele, sau să spameze, e invitatul meu, give credit where it's due.

Eventual se poate scrape-ui şi technorati-ul, folosind adresele din database-uri, pentru a extrage the technorati rank and autorithy. Sau se poate folosi API-ul technorati, care este limitat la 500 api calls per day.

Cu acest post am încheiat definitiv subiectul.


G.

0 comentarii: