Tema 2 a fost implementata in Python 2.5 si s-a folosit pentru baze de date sqlite3 (incluse in pachetul standard Python).

Site-ul analizat este www.photosig.com. Programul pleaca de la un user si creeaza lista prietenilor sau a dusmanilor acestuia prin analiza comentariilor de pe ultima poza isncrisa pe site. Procesul se repeta pentru fiecare user.

Iata codul in Python:

#Ionescu Radu-Dragos 351 C2
import urllib, sqlite3

def cautarePoza(id):
#accesez pagina cu toate pozele userului ID si intorc linkul primei poze
aux="http://www.photosig.com/go/users/userphotos?id="+str(id)
fisierHtml = urllib.urlopen(aux)
s = fisierHtml.read()
index = s.find("/go/photos/view;jsessionid")
indexI=s.find("?id=",index+27)
aux=""
idPoza = ""
indexI=indexI+4
while s[indexI]!="&":
idPoza = idPoza + s[indexI]
indexI=indexI+1
return idPoza

def analizaPoza(idPoza):
global db
global userB
aux="http://www.photosig.com/go/photos/view?id="+idPoza+"&forward=user"
fisierHtml = urllib.urlopen(aux)
s = fisierHtml.read()
filename = "test.dat"
FILE = open(filename,"w")
FILE.writelines(s)
FILE.close()

i = s.find("alt=\"Thumb")
if i==-1:
print "Fara comentarii"
return -1
i1 = s.find("alt=\"Thumb", i+9)
while i1!=-1:
iaux = i1 + 11
if s[iaux]=="u":
relatie="prieten"
if s[iaux]=="d":
relatie="dusman"
indexI = s.find("/go/users/view;jsessioniddas",i1)
indexI = s.find("?id=", idUser+ 25)
indexI = indexI+4
idUser = ""
while s[indexI]!="\"":
idUser = idUser + s[idUser]
indexI=indexI+1
print "Iduser = "+idUser
aux = indexI + 2
numeUser=""
while s[aux]!="<": numeUser = numeUser + s[aux] aux = aux+1 # introducere in baza de date url = "http://www.photosig.com/go/users/view?id="+idUser t1 = (idUser,url,numeUser) e = 0 c = db.cursor() c.execute("SELECT oid FROM utilizator") for row in c: if str(row[0])==idUser: e=1 if e==0: c.execute("INSERT INTO utilizator(oid, url_profil, username) VALUES(?,?,?)",t1) f=0 t2 = (idUser, userB, relatie) c.execute("SELECT oid1, oid2 FROM colaborare") for row in c: if str(row[0])==str(idUser): if str(row[1])==str(userB): f=1 if f==0: c.execute("INSERT INTO colaborare(oid1, oid2, detalii_colaborare) VALUES(?,?,?)",t2) t3 = (idUser, url, numeUser) g = 0 c.execute("SELECT username from useri") for row in c: if str(row[0])==numeUser: g=1 if g==0: c.execute("INSERT INTO useri(oid, url_profil, username) VALUES(?,?,?)",t3) i1 = s.find("alt=\"Thumb", aux) #Program principal db = sqlite3.connect('ie.db') cd = db.cursor() limita = 3 userB = "245246" s = cautarePoza(userB) analizaPoza(s) #ne conectam la useri si alegem cate un user #stergem userul dupa i = 0 while i=limita:
s = cautarePoza(userB)
analizaPoza(s)
break

print "Tabela utilizator:"
cd.execute("SELECT oid FROM utilizator")
for row in cd:
print row[0]
print "Tabela colaborare:"
cd.execute("SELECT oid1,oid2,detalii_colaborare FROM colaborare")
for row in cd:
print str(row[0])+"-"+str(row[1])+": "+row[2]
print "Tabela useri[neparcursi]:"
cd.execute("SELECT oid FROM useri")
for row in cd:
print row[0]

db.close()