def izlocimo_restavracije_s_strani(url): podatki = [] orodja.shrani_spletno_stran(url, frontpage_filename) vsebina = orodja.vsebina_datoteke(frontpage_filename) for blok in vzorec_bloka.findall(vsebina): podatki.append(izlocimo_podatke(blok)) return podatki
def igralci_na_strani(st_strani): url = f'https://www.fifaindex.com/players/{st_strani}/?gender=male&order=desc' ime_datoteke = 'zajeti-podatki/igralci{}.html'.format(st_strani) orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_bloka.finditer(vsebina): yield izloci_podatke_igralca(blok.group(0))
def ena_stran(stevilka): url=f'https://www.goodreads.com/book/popular_by_date/{stevilka}/' datoteka = f'najbolj-popularne-knjige/{stevilka}.html' orodja.shrani_spletno_stran(url, datoteka) vsebina = orodja.vsebina_datoteke(datoteka) for blok in vzorec_bloka.finditer(vsebina): yield spremeni(blok.group(0))
def vsa_tekmovanja(začetek, konec): osnovni_link = "https://www.imo-official.org/" tekmovanja = [] for leto in range(zacetek, konec): tekmovanje_leto = [] #Za leto 1980 ni podatkov. if leto == 1980: continue url = f'https://www.imo-official.org/year_country_r.aspx?year={leto}' ime_datoteke_html = f'zajeti_podatki/leto_{leto}/imo-{leto}.html' orodja.shrani_spletno_stran(url, ime_datoteke_html) vsebina = orodja.vsebina_datoteke( f'zajeti_podatki/leto_{leto}/imo-{leto}.html') for link in vzorec_leto.finditer(vsebina): tekmovanje_leto.append({ "leto": leto, "država": link.groupdict()["država"], "link": osnovni_link + link.groupdict()["link1"] + link.groupdict()["link2"] }) # Shranim v json ime_datoteke_json = f'zajeti_podatki/leto_{leto}/imo-{leto}.json' orodja.zapisi_json(tekmovanje_leto, ime_datoteke_json) tekmovanja.extend(tekmovanje_leto) return tekmovanja
def leto_drzava_gostiteljica(): url = "https://www.imo-official.org/results_year.aspx" ime_datoteke_html = 'zajeti_podatki/leto_gostiteljica.html' orodja.shrani_spletno_stran(url, ime_datoteke_html) vsebina = orodja.vsebina_datoteke(ime_datoteke_html) for leto_drzava in vzorec_leto_gostiteljica.finditer(vsebina): yield leto_drzava.groupdict()
def dodaj_letosnje_podatke(firma): ime_datoteke = 'Spletne_strani/Firme/' + firma[ 'poenostavljeno'] + '/2019.html' orodja.shrani_spletno_stran(firma['link'], ime_datoteke) vsebina_strani = orodja.vsebina_datoteke(ime_datoteke) for zadetek in re.finditer(vzorec_na_strani, vsebina_strani): podatki_firme = zadetek.groupdict() firma.update(podatki_firme)
def zanri_url(seznam): for konec in seznam: url = ('https://www.goodreads.com/book/show/' f'{konec}') ime_datoteke = f'htmlji-knjig-posebej/{konec}.html' orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) blok = re.finditer(vzorec_zanra, vsebina) print(blok)
def podrobnosti(sifra): '''Shrani oglas z dano šifro, prebere vsebino danega oglasa in naredi slovar glede na zgornji vzorec s pomočjo regularnih izrazov.''' url = (f'https://www.studentski-servis.com' f'/ess/podrobnosti.php?id={sifra}') ime_datoteke = 'zajeti-podatki/podrobnosti-oglasa.{}.html'.format(sifra) orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) return izloci_podatke_oglasa(vsebina)
def knjige_na_strani(st_strani, na_stran=100): url = ('https://www.goodreads.com/list/show/' '1.Best_Books_Ever?' f'page={st_strani}') ime_datoteke = f'htmlji/knjige-{st_strani}.html' orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_bloka.finditer(vsebina): yield izloci_podatke_knjige(blok.group(0))
def knjige_na_strani(st_strani): url = ( f'https://www.goodreads.com/list/show/133723.Goodreads_Choice_Awards_2019_eligible_for_write_in_only_?page={st_strani}' ) ime_datoteke = 'knjige-na-strani-{}.html'.format(st_strani) orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_bloka.finditer(vsebina): yield izloci_podatke_knjige(blok.group(0))
def download_anime_page_id(st_strani, zacetek): '''Shrani anime, ki je v bazi spletne strani pod id''' for i in range(st_strani): url = ('https://myanimelist.net/anime/{}'.format(zacetek + i)) ime_datoteke = 'Anime-id{}.html'.format(zacetek + i) path = os.path.join(anime_directory, ime_datoteke) orodja.shrani_spletno_stran(url, path) #vsebina = orodja.vsebina_datoteke(ime_datoteke) #print(vsebina) return None
def shrani_strani_iz_nepremicnine(stevilo_oglasov): stevilo_strani = stevilo_oglasov // 30 + 1 for stevilka in range(1, stevilo_strani + 1): url = ( f'https://www.nepremicnine.net/oglasi-prodaja/slovenija/{stevilka}/' #f dela kot format ) orodja.shrani_spletno_stran( url, f'spletne_strani/nepremicnine{stevilka}.html', vsili_prenos=False)
def filmi_na_strani(st_strani, na_stran=250): url = (f'https://www.imdb.com/search/title' f'?sort=num_votes,desc&title_type=feature&count={na_stran}' f'&start={(st_strani - 1) * na_stran + 1}') ime_datoteke = 'zajeti-podatki/najbolj-znani-filmi-{}.html'.format( st_strani) orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_bloka.finditer(vsebina): yield izloci_podatke_filma(blok.group(0))
def poberi_tedensko_lestvico(datum): leto = datum.year mesec = datum.month dan = datum.day url = f'http://world.kbs.co.kr/service/musictop10.htm?lang=e&start_year={leto}&rank_date={leto}-{mesec}-{dan}' datoteka = f'kpop-lestvice/{leto}-{mesec}-{dan}.html' orodja.shrani_spletno_stran(url, datoteka) vsebina = orodja.vsebina_datoteke(datoteka) for blok in vzorec_bloka.finditer(vsebina): yield izlusci_podatke_pesmi(blok.group(0))
def nalozi_strani(): counter = 1 for leto in range(1999, 2020): for i in range(1, seti_na(leto) + 1): url = (f'https://brickset.com/sets/year-{leto}/page-{i}') ime_datoteke = ( f"/Users/thrawn/Documents/git/Lego-sets/html-nalozeni-1999-2019/brickset-database-{counter}.html" ) orodja.shrani_spletno_stran(url, ime_datoteke, vsili_prenos=False) counter += 1
def animeji_na_strani(stran): start = stran * 50 url = ( f'https://myanimelist.net/anime.php?cat=0&q=&type=1&score=0&status=2&p=0&r=0&sm=0&sd=0&sy=0&em=0&ed=0&ey=0&c%5B0%5D=a&c%5B1%5D=b&c%5B2%5D=c&c%5B3%5D=d&c%5B4%5D=e&c%5B5%5D=f&c%5B6%5D=g&gx=1&genre%5B0%5D=9&genre%5B1%5D=12&genre%5B2%5D=26&genre%5B3%5D=28&genre%5B4%5D=33&genre%5B5%5D=34&o=7&w=1&show={start}' ) ime_datoteke = f'zajeti-podatki/popularni_animeji_{stran}' orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_bloka.finditer(vsebina): yield izloci_podatke_animeja(blok.group(0))
def poberi_in_izlusci_umetnika(ime, url): SOLO, SKUPINA = 'SO', 'SK' umetnik = {} datoteka = f'umetniki/{ime}.html' orodja.shrani_spletno_stran(url, datoteka) vsebina = orodja.vsebina_datoteke(datoteka) zalozbe = vzorec_zalozba.search(vsebina) if zalozbe: zalozbe_za_precistiti = zalozbe['zalozba'].split(', ') preciscene_zalozbe = [] for zalozba in zalozbe_za_precistiti: zalozba = neumne_izjeme(zalozba) cista_zalozba = pocisti_tekst(zalozba) preciscene_zalozbe.append(cista_zalozba) umetnik['zalozbe'] = preciscene_zalozbe if ime == 'SHAUN': umetnik['zalozbe'] = ['Happy Robot Record'] else: umetnik['zalozbe'] = None debut = vzorec_debut1.search(vsebina) if not debut: debut = vzorec_debut2.search(vsebina) if debut: debut = int(debut['debut']) if debut == 1808: debut = 2013 umetnik['debut'] = debut else: umetnik['debut'] = None clani = vzorec_clani.search(vsebina) if ime == 'X1': clani = vzorec_clani_za_x1_ker_so_tako_posebni.search(vsebina) if clani: umetnik['clani'] = pocisti_tekst(clani['clani']).split(', ') umetnik['tip'] = SKUPINA else: umetnik['clani'] = None umetnik['tip'] = SOLO biografija = vzorec_biografija1.search(vsebina) if not biografija: biografija = vzorec_biografija2.search(vsebina) if not biografija: biografija = vzorec_biografija3.search(vsebina) if biografija: biografija = biografija['biografija'] umetnik['biografija'] = pocisti_tekst(biografija) else: umetnik['biografija'] = None return umetnik
def obdelava_spletne_strani(st_strani): url = ( 'https://www.futbin.com/19/players' '?page={}' '&position=CB,LB,LWB,RB,RWB,CDM,CM,CAM,CF,ST,LM,LW,LF,RM,RW,RF&version=all_nif' ).format(st_strani) ime_datoteke = 'igralci-Fife19-{}.html'.format(str(st_strani)) orodja.shrani_spletno_stran(url, ime_datoteke) odseki_igralcev = orodja.razdeli_stran_na_igralce(ime_datoteke, vzorec_odseka) for igralec in odseki_igralcev: yield obdelaj_igralca(igralec)
def shrani_strani(regije, stevilo_oglasov): for regija, stevilo in zip(regije, stevilo_oglasov): print(regija, stevilo) st_strani = stevilo // 30 + 1 print(st_strani) for stevilka in range(1, st_strani + 1): url = ( f'https://www.nepremicnine.net/oglasi-prodaja/{regija}/{stevilka}/' #f dela kot format ) orodja.shrani_spletno_stran(url, f'html_regije/{regija}{stevilka}.html', vsili_prenos=False)
def podjetja_na_strani(): count = 0 for naslov in naslovi: for a in naslov: url1 = (naslov[a]) url = f"https://www.itis.si{url1}" count += 1 ime_datoteke = '{}-{}.html'.format(dejavnost, count) orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_podjetja.finditer(vsebina): yield izloci_podatke(blok.group(0)) os.remove(ime_datoteke)
def stanovanje_na_strani(st_strani): url = ("https://www.nepremicnine.net/" "oglasi-oddaja/slovenija/" f"stanovanje/{st_strani}/") ime_datoteke = f"spletne-strani/stanovanja-{st_strani}.html" orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) for blok in vzorec_bloka.finditer(vsebina): url2 = str(izloci_podatke_stanovanja(blok.group(0)).get("url")) id = izloci_podatke_stanovanja(blok.group(0)).get("id") drugo = dodatni_podatki_na_strani(url2, id) stanovanje = izloci_podatke_stanovanja(blok.group(0)) stanovanje.update(drugo) yield stanovanje
def podjetja_na_strani(): count = 0 for naslov in naslovi: for a in naslov: url1 = (naslov[a]) url = f"https://www.stop-neplacniki.si{url1}" count += 1 ime_datoteke = f'{count}.html' orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) st_vrstic = stetje_vrstic(ime_datoteke) print(st_vrstic) for blok in vzorec_podjetja.finditer(vsebina): yield izloci_podatke(blok.group(0), st_vrstic) os.remove(ime_datoteke)
def oglasi_na_strani(stran): url = ( "https://www.avto.net/Ads/results.asp?znamka=&model=&modelID=&tip=&znamka2=" "&model2=&tip2=&znamka3=&model3=&tip3=&cenaMin=0&cenaMax=999999&letnikMin=0" "&letnikMax=2090&bencin=0&starost2=999&oblika=&ccmMin=0&ccmMax=99999&mocMin" "=&mocMax=&kmMin=5000&kmMax=9999999&kwMin=0&kwMax=999&motortakt=&motorvalji" "=&lokacija=0&sirina=&dolzina=&dolzinaMIN=&dolzinaMAX=&nosilnostMIN=&nosiln" "ostMAX=&lezisc=&presek=&premer=&col=&vijakov=&EToznaka=&vozilo=&airbag=&bar" "va=&barvaint=&EQ1=1000000000&EQ2=1000000000&EQ3=1000000000&EQ4=100000000&EQ" "5=1000000000&EQ6=1000000000&EQ7=1000100020&EQ8=1010000001&EQ9=100000000&KAT" "=1010000000&PIA=&PIAzero=&PSLO=&akcija=&paketgarancije=0&broker=&prikazkat" f"egorije=&kategorija=&ONLvid=&ONLnak=&zaloga=10&arhiv=&presort=&tipsort=&stran={stran}" ) ime_datoteke = f"rabljeni-avtomobili-stran-{stran}.html" orodja.shrani_spletno_stran(url, ime_datoteke)
def knjige_na_strani(st_strani): global st_knjige url = f'https://www.goodreads.com/list/show/1.Best_Books_Ever?page={st_strani}' ime_datoteke = 'zajeti-podatki/najboljse-knjige-{}.html'.format(st_strani) orodja.shrani_spletno_stran(url, ime_datoteke) vsebina = orodja.vsebina_datoteke(ime_datoteke) # Shranimo knjige for knjiga in vzorec_povezave.finditer(vsebina): povezava = knjiga.group(1) posamezne_knjige(st_knjige, vsebina, povezava) st_knjige += 1 # Shranimo avtorje for knjiga in vzorec_povezave_avtorja.finditer(vsebina): povezava_avtorja = knjiga.group(1) ime_avtorja = knjiga.group(2).replace(''', '\'') avtor(povezava_avtorja, ime_avtorja) print(st_knjige)
def zajemi_glavne(st_strani=99): """ Zajame strani, kjer je seznam vin, hkrati za vsako vino poišče link na njegovo unikatno stran in ga shrani v seznam. """ vina_url = [] vino_url_vzorec = re.compile( r'<a href=(?P<vino>"https://winelibrary.com/(wines|others|gourmet)/.*?)><img', re.DOTALL) for i in range(st_strani): # shranimo strani v unikatne datoteke orodja.shrani_spletno_stran(f'https://winelibrary.com/search?page={i}&search=', f'zajete_strani/vina/vina{i * 25 + 1}-{(i+1) * 25}.html') vina_url += re.findall( vino_url_vzorec, orodja.vsebina_datoteke( f'zajete_strani/vina/vina{i * 25 + 1}-{(i+1) * 25}.html')) return vina_url
def vina_na_strani(st_strani): '''Najprej nalozi stran s seznamom izdelkov, nato za vsak izdelek poišče url do podrobnih podatkov in naloži še tiste urlje. ''' url = ('https://winelibrary.com/search?' 'color%5B%5D=Red&' 'color%5B%5D=White&' 'color%5B%5D=Rose&' 'page={}&' 'size%5B%5D=750ML').format(st_strani) ime_datoteke1 = 'zajeti-podatki/vina-{}.html'.format(st_strani) orod.shrani_spletno_stran(url, ime_datoteke1) vsebina = orod.vsebina_datoteke(ime_datoteke1) i = 1 for url_vina in vzorec_url_vina.finditer(vsebina): ime_datoteke2 = 'zajeti-podrobni-podatki/vina-podorobno-{}.html'.format( st_strani * 100 + i) podatek = url_vina.groupdict() url1 = 'https://winelibrary.com/wines/' + podatek['novi_url'].strip() orod.shrani_spletno_stran(url1, ime_datoteke2) nova_vsebina = orod.vsebina_datoteke(ime_datoteke2) i += 1 yield izloci_podatke_vina(nova_vsebina)
def nalozi_podatke_starega_leta(firma, leto): ime_datoteke = 'Spletne_strani/Firme/' + firma[ 'poenostavljeno'] + '/' + leto + '.html' orodja.shrani_spletno_stran(firma['link'].replace('2019', leto), ime_datoteke) vsebina_strani = orodja.vsebina_datoteke(ime_datoteke) zadetek = None for zadetek in re.finditer(vzorec_na_strani, vsebina_strani): zadetek = zadetek podatki_firme = zadetek.groupdict() if zadetek == None: podatki_firme = { 'sredstva': '-', 'prihodki': '-', 'dobicek': '-', 'zaposleni': '-' } firma['vec_letna_sredstva'].update({leto: podatki_firme['sredstva']}) firma['vec_letni_prihodki'].update({leto: podatki_firme['prihodki']}) firma['vec_letni_dobicki'].update({leto: podatki_firme['dobicek']}) firma['vec_letni_zaposleni'].update({leto: podatki_firme['zaposleni']})
def zajemi_posamezna(seznam_urljev): """ Od zgornje funkcije prejme seznam vin in pobere njih posamezne strani. Hkrati dobi tudi vrsto proizvoda - ni nujno, da so samo vina. """ i = 1 for link, vrsta in seznam_urljev: if i <= 1000: orodja.shrani_spletno_stran(link[1:-1], f'zajete_strani/oglasi/01/oglas{i}.html') elif (i >= 1001) and (i <= 2000): orodja.shrani_spletno_stran(link[1:-1], f'zajete_strani/oglasi/02/oglas{i}.html') else: orodja.shrani_spletno_stran(link[1:-1], f'zajete_strani/oglasi/03/oglas{i}.html') i += 1
import orodja import re ############################################################################### # Najprej preberimo podatke iz interneta in stran zapišimo v obliko besedila. ############################################################################### orodja.pripravi_imenik("spletna.csv") for i in range(1, 9): url = ( "https://www.imdb.com/search/title?num_votes=2000,&sort=user_rating," "desc&title_type=tv_episode&view=advanced&page={}&count=500&ref_=adv_nxt'" ).format(i) orodja.shrani_spletno_stran(url, "serije-{}.html".format(i)) besedilo = "" for i in range(1, 9): besedilo = besedilo + "\n" + orodja.vsebina_datoteke( "serije-{}.html".format(i)) ############################################################################### # Iz dobljenega besedila želimo ustvariti slovar z iskanimi podatki. ############################################################################### def poisci_epizode(niz): '''Funkcija, ki celoten niz razdeli na posamezne epizode.''' vzorec = re.compile(r"class=\"loadlate\"" r"(.*?)" r"\n\n", re.DOTALL) seznam = [] for ujemanje in vzorec.finditer(niz):
def cisti_podatki(podatki): podatki_knjige = podatki.groupdict() podatki_knjige['ocena'] = float(podatki_knjige['ocena'].replace(',', '.')) podatki_knjige['naslov'] = str(podatki_knjige['naslov'].replace( '"', '"')) podatki_knjige['score'] = float(podatki_knjige['score'].replace(',', '.')) podatki_knjige['glasovalci'] = int(podatki_knjige['glasovalci'].replace( ',', '')) return podatki_knjige for i in range(1, 21): url = ( 'https://www.goodreads.com/list/show/7.Best_Books_of_the_21st_Century?page={}' ).format(i) orodja.shrani_spletno_stran(url, 'stran-{}.html'.format(i)) podatki = [] for stran in range(1, 21): vsebina = orodja.vsebina_datoteke('stran-{}.html'.format(stran)) for ujemanje in vzorec.finditer(vsebina): podatki_knjige = cisti_podatki(ujemanje) podatki.append(podatki_knjige) zapisi_csv(podatki, ['naslov', 'avtor', 'ocena', 'score', 'glasovalci'], 'knjige21.csv') zapisi_json(podatki, 'knjige.json') def vrstice_naslovi_avtorji(dat): ''' Vrne koliko knjig imamo med podatki.