PageRenderTime 63ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/LV2/zad_7.py

https://gitlab.com/mmeisel/LV
Python | 43 lines | 35 code | 3 blank | 5 comment | 3 complexity | e4bf66d3b2693dcdd63aa98aafdd6255 MD5 | raw file
  1. #Napišite program koji će pomoću biblioteke Beautiful Soup ispisati
  2. #sve adrese i nazive za vanjske linkove web stranice koju definira korisnik.
  3. #Npr. za stranicu www.etfos.unios.hr vanjski linkovi su linkovi koji
  4. #ne sadrže 'etfos.unios.hr' u svom URL-u niti pokazuju na neki od dokumenata
  5. #u poddirektorijima (npr. '/znanost/znanstveno-strucna-predavanja/').
  6. import re
  7. import urllib
  8. from bs4 import BeautifulSoup
  9. def ripDomain(): #funkcija koja "cupa" domenu iz linka
  10. if re.search(r'[w]{3}', urlAddr): #ukoliko link sadrzi www
  11. temp1=(urlAddr.split('www.')[1]).split('/')[0] #tada se dijeli link na znakovima "www." te se nakon toga dijeli na znaku /
  12. else: #u suprotnom
  13. temp1=(urlAddr.split('://')[1]).split('/')[0] #link pocinje sa http(s):// pa se dijeli na znakovima :// pa onda na znaku /
  14. return temp1 #vraca se domena
  15. def correctURL(): #funkcija koja dodaje http:// ukoliko ga link ne sadrzi
  16. if not re.match(r'^http[s]{0,1}',urlAddr): #trazi se pocinje li link sa http(s)
  17. return ''.join(['http://', urlAddr]) #ukoliko ne pocinje tada se na pocetak dodaje http://
  18. else:
  19. return urlAddr #u suprotnom se vraca ne promjenjen link
  20. urlAddr=raw_input('Upisite web lokaciju: ') #upisuje se web lokacija
  21. urlAddr=correctURL() #ispravlja se url ukoliko je potrebno
  22. html=urllib.urlopen(urlAddr, "lxml").read() #otvara se url
  23. soup=BeautifulSoup(html) #i deklarira objekt tipa BeautifulSoup
  24. domain=ripDomain() #trazi se domena
  25. print 'Domena je: ',domain #i ispisuje se
  26. tagovi=soup('a') #traze se svi tagovi 'a'
  27. for tag in tagovi: #i za svaki pronađeni tag
  28. temp=re.search(r'http[s]{0,1}', str(tag.get('href'))) #provjerava se sadrzili http ili https
  29. temp1=re.search(domain, str(tag.get('href'))) #i sadrzi li domenu
  30. if temp and not temp1: #ukoliko sadrzi http(s) a ne sadrzi domenu tada se ispisuje na nacin
  31. if len(tag.contents)>0: #ukoliko tag posjeduje atribut contents
  32. tagCont=''.join([unicode(tag.contents[0]),': ']) #tada spoji atribut sa znakom :
  33. else:
  34. tagCont='N/A: ' #ukoliko atribut nije pronađen onda se za naziv ispisuje N/A:
  35. if re.search(r'[?]http[s]{0,1}', str(tag.get('href'))): #ukoliko prije http(s)-a postoji niz znakova
  36. print tagCont, str(tag.get('href')).split('?')[1] #tada se oni uklanjaju i ispisuje se link
  37. else:
  38. print tagCont,tag.get('href') #ukoliko ne postoji nikakav znak tada se ispisuje lik