diff --git a/kivi_cars/allcrawlers/autocrawler/olxautocrawler.py b/kivi_cars/allcrawlers/autocrawler/olxautocrawler.py deleted file mode 100644 index 968bb98..0000000 --- a/kivi_cars/allcrawlers/autocrawler/olxautocrawler.py +++ /dev/null @@ -1,305 +0,0 @@ -# ----------Imports------------ -from datetime import date -from traceback import print_tb -from unittest import result -from urllib import response -from urllib.request import Request -from bs4 import BeautifulSoup -from matplotlib import dates -from numpy import diag_indices -import requests -import pandas as pd -import random - -# List of User-Agent -user_agent_list = [ - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36', - 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1', - 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)', - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75', - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363', -] - -user_agent = user_agent_list[random.randint(0, len(user_agent_list)-1)] -headers = {'User-Agent': user_agent} - -# Array of object filteri - -podaci_db = [] - -# Pagination cross webpages -# n is number of pages to crawl -pages_number_to_crawl = 2 -for i in range(1,pages_number_to_crawl): - # if kategorija=18 - Automobili - main_website = 'https://www.olx.ba/pretraga?id=18&kategorija=18&stanje=0&vrstapregleda=tabela&sort_order=desc&sort_po=datum&kilometra-a_min=0&kilometra-a_max=0&stranica=' + str(i) - category_of_vehicle = 18 - - # Request to website - response_for_page = requests.get(main_website, headers=headers) - - # Soup object - soup_page = BeautifulSoup(response_for_page.content, 'html.parser') - - # Results - results_all_items_per_page = soup_page.find_all('div',{'class':'listitem'}) - - # List of olx id - olx_id = [] - - # All filters - filters = { - "Olx_id" : None, - "Kategorija" : None, - "Cijena" : None, - "Stanje" : None, - "Lokacija_kanton" : None, - "Lokacija_grad" : None, - "Proizvođač" : None, - "Model" : None, - "Godište" : None, - "Kilometraža" : None, - "Kilovata (KW)" : None, - "Kubikaža" : None, - "Gorivo" : None, - "Broj vrata" : None, - "Konjskih snaga" : None, - "Metalik" : None, - "Masa/Težina (kg)" : None, - "Tip" : None, - "Pogon" : None, - "Emisioni standard" : None, - "Veličina felgi" : None, - "Transmisija" : None, - "Broj stepeni prijenosa" : None, - "Boja" : None, - "Muzika / ozvučenje" : None, - "Parking senzori" : None, - "Parking kamera" : None, - "Registrovan do" : None, - "Godina prve registracije" : None, - "Broj prethodnih vlasnika" : None, - "Posjeduje gume" : None, - "Višezonska klima" : None, - "Rolo zavjese" : None, - "Svjetla" : None, - "Zaštita/Blokada" : None, - "Sjedećih mjesta" : None, - "Turbo" : None, - "DPF/FAP filter" : None, - "Strane tablice" : None, - "Ocarinjen" : None, - "Prilagođen invalidima" : None, - "Servo volan" : None, - "Tempomat" : None, - "ESP" : None, - "El. podizači stakala" : None, - "Senzor mrtvog ugla" : None, - "Digitalna klima" : None, - "Touch screen (ekran)" : None, - "Panorama krov" : None, - "Koža" : None, - "Masaža sjedišta" : None, - "El. pomjeranje sjedišta" : None, - "Senzor auto. svjetla" : None, - "Alarm" : None, - "Daljinsko otključavanje" : None, - "Auto kuka" : None, - "Udaren" : None, - "Start-Stop sistem" : None, - "Park assist" : None, - "Registrovan" : None, - "Na lizingu" : None, - "Servisna knjiga" : None, - "Komande na volanu" : None, - "ABS" : None, - "Airbag" : None, - "Električni retrovizori" : None, - "Klima" : None, - "Navigacija" : None, - "Šiber" : None, - "Naslon za ruku" : None, - "Hlađenje sjedišta" : None, - "Grijanje sjedišta" : None, - "Memorija sjedišta" : None, - "Alu felge" : None, - "Centralna brava" : None, - "Oldtimer" : None, - "ISOFIX" : None, - "Datum" : None, - "Vrijeme" : None - } - - # Number of all items - broj_el = 0 - - ## Getting all id's of articles - for i in range(0, len(results_all_items_per_page)): - if(results_all_items_per_page[i].find('p')): - # Divide id from rest of link - address_content = results_all_items_per_page[i].find('a')['href'] - temp = address_content.split('/') - artikal_number = temp[4] - olx_id.append(artikal_number) - broj_el = broj_el + 1 - - for i in range(0, broj_el): - - # New dictionary instance for every item - podaci = filters.copy() - - # Add kategorija - if (category_of_vehicle == 18): podaci['Kategorija'] = ('Automobili') - - # Artikal olx_link - artikal_link = 'https://www.olx.ba/artikal/' + olx_id[i] - podaci["Olx_id"] = olx_id[i] - response_item = requests.get(artikal_link, headers=headers) - soup_item = BeautifulSoup(response_item.content, 'html.parser') - result_item = soup_item.find('div',{'class':'artikal_lijevo'}) - # print(artikal_link) - - - # Getting filters info from item - - # Osnovni filteri - - # Cijena - if (result_item.find('div',{'id':'pc'})): - x_cijena = result_item.find('div',{'id':'pc'}).findAll('p') - item_cijena = x_cijena[1].get_text().split()[0] - if(item_cijena == 'Po'): - item_cijena = "Po dogovoru" - podaci['Cijena'] = item_cijena - # print(podaci['Cijena']) - - # Lokacija - #kanton - if (result_item.find('div',{'class':'mobile-lokacija'})): - x_lokacija = result_item.find('div',{'class':'mobile-lokacija'})['data-content'].split() - item_kanton = x_lokacija[0].replace(',','') - podaci['Lokacija_kanton'] = item_kanton - # print(podaci['Lokacija_kanton']) - - #grad - x_lokacija.pop(0) - item_grad = x_lokacija - mojstring = ' '.join(item_grad) - podaci['Lokacija_grad'] = mojstring - # print(podaci['Lokacija_grad']) - - # Stanje - if (result_item.find('div',{'class':'mobile-stanje'})): - x_stanje = result_item.find('div',{'class':'mobile-stanje'}).get_text().split() - item_stanje = x_stanje[1] - podaci['Stanje'] = item_stanje - # print(podaci['Stanje']) - - # Ispod divs - if (result_item.find_all('div',{'class':'ispod'})): - ispod_divs = result_item.find_all('div',{'class':'ispod'}) - for i in range (len(ispod_divs)): - - # Proizvodjac - if (i==0): - x_proizvodjac_p = ispod_divs[0].find_all('p') - x_proizvodjac = x_proizvodjac_p[1].get_text() - podaci['Proizvođač'] = x_proizvodjac - # print(podaci['Proizvođač']) - - # Model - if (i==1): - x_model_p = ispod_divs[1].find_all('p') - x_model = x_model_p[1].get_text() - podaci['Model'] = x_model - # print(podaci['Model']) - - # Godiste - if (i==2): - x_godiste_p = ispod_divs[2].find_all('p') - x_godiste = x_godiste_p[1].get_text() - podaci['Godište'] = x_godiste - # print(podaci['Godište']) - - # Kilometraza - if (i==3): - x_kilometraza_p = ispod_divs[3].find_all('p') - x_kilometraza = x_kilometraza_p[1].get_text() - podaci['Kilometraža'] = x_kilometraza - # print(podaci['Kilometraža']) - - # Gorivo - if (i==4): - x_gorivo_p = ispod_divs[4].find_all('p') - x_gorivo = x_gorivo_p[1].get_text() - podaci['Gorivo'] = x_gorivo - # print(podaci['Gorivo']) - - - # Napredni filteri - - # Dodatna polja - if (result_item.find_all('div',{'id':'dodatnapolja1'})): - dodatnapolja_all_divs = result_item.find_all('div',{'id':'dodatnapolja1'}) - for i in range (0,len(dodatnapolja_all_divs)): - df_pom = dodatnapolja_all_divs[i].find_all('div',{'class','df'}) - for j in range (0,len(df_pom)): - df_pom1 = df_pom[j].find('div',{'class','df1'}).get_text() - if (df_pom[j].find('div',{'class','df2'}).find('i')): - df_pom2 = True - else : df_pom2 = df_pom[j].find('div',{'class','df2'}).get_text() - podaci[df_pom1] = df_pom2 - - # KW single - kw = podaci['Kilovata (KW)'].split()[0] - podaci['Kilovata (KW)'] = kw - # print(kw) - - - - # Vrijeme i datum - if (result_item.find('div', {'class' : 'ob'})): - date_time_div = result_item.find('div', {'class' : 'ob'}).attrs - datum_vrijeme = date_time_div["data-content"].split() - datum = datum_vrijeme[0] - vrijeme = datum_vrijeme[2] - podaci["Datum"] = datum - podaci["Vrijeme"] = vrijeme - # print(podaci["Datum"], podaci["Vrijeme"]) - - - - - # Insert datas to database - dictionary_copy = podaci.copy() - podaci_db.append(dictionary_copy) - - - - -# ------------- CREATE PANDAS DATAFRAME - DICTIONARY -------------- - -olx_db = pd.DataFrame(podaci_db) # treba biti niz -# print(olx_db) - -olx_db.to_excel('proba231112.xlsx',index=False) - -print("Zavrseno!!") - - - - - - - - - - - - - - - - - - diff --git a/kivi_cars/cars/crawler.py b/kivi_cars/cars/crawler.py new file mode 100644 index 0000000..180db20 --- /dev/null +++ b/kivi_cars/cars/crawler.py @@ -0,0 +1,327 @@ +# ----------Imports------------ +from traceback import print_tb +from unittest import result +from urllib import response +from urllib.request import Request +from bs4 import BeautifulSoup +from matplotlib import dates +from numpy import diag_indices +import requests +import pandas as pd +import random +import datetime + + + +# Define function crawler + +def CarsCrawler(number_of_pages): + + print("Crawler krola!") + + # List of User-Agent + user_agent_list = [ + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36', + 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1', + 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)', + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75', + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363', + ] + + user_agent = user_agent_list[random.randint(0, len(user_agent_list)-1)] + headers = {'User-Agent': user_agent} + + # Array of object filteri + + podaci_db = [] + + # Pagination cross webpages + # n is number of pages to crawl + pages_number_to_crawl = number_of_pages + for i in range(1,pages_number_to_crawl): + # if kategorija=18 - Automobili + main_website = 'https://www.olx.ba/pretraga?id=18&kategorija=18&stanje=0&vrstapregleda=tabela&sort_order=desc&sort_po=datum&kilometra-a_min=0&kilometra-a_max=0&stranica=' + str(i) + category_of_vehicle = 18 + + # Request to website + response_for_page = requests.get(main_website, headers=headers) + + # Soup object + soup_page = BeautifulSoup(response_for_page.content, 'html.parser') + + # Results + results_all_items_per_page = soup_page.find_all('div',{'class':'listitem'}) + + # List of olx id + olx_id = [] + + # All filters + filters = { + "Olx_id" : None, + "Kategorija" : None, + "Cijena" : None, + "Stanje" : None, + "Lokacija_kanton" : None, + "Lokacija_grad" : None, + "Proizvođač" : None, + "Model" : None, + "Godište" : None, + "Kilometraža" : None, + "Kilovata (KW)" : None, + "Kubikaža" : None, + "Gorivo" : None, + "Broj vrata" : None, + "Konjskih snaga" : None, + "Metalik" : None, + "Masa/Težina (kg)" : None, + "Tip" : None, + "Pogon" : None, + "Emisioni standard" : None, + "Veličina felgi" : None, + "Transmisija" : None, + "Broj stepeni prijenosa" : None, + "Boja" : None, + "Muzika / ozvučenje" : None, + "Parking senzori" : None, + "Parking kamera" : None, + "Registrovan do" : None, + "Godina prve registracije" : None, + "Broj prethodnih vlasnika" : None, + "Posjeduje gume" : None, + "Višezonska klima" : None, + "Rolo zavjese" : None, + "Svjetla" : None, + "Zaštita/Blokada" : None, + "Sjedećih mjesta" : None, + "Turbo" : None, + "DPF/FAP filter" : None, + "Strane tablice" : None, + "Ocarinjen" : None, + "Prilagođen invalidima" : None, + "Servo volan" : None, + "Tempomat" : None, + "ESP" : None, + "El. podizači stakala" : None, + "Senzor mrtvog ugla" : None, + "Digitalna klima" : None, + "Touch screen (ekran)" : None, + "Panorama krov" : None, + "Koža" : None, + "Masaža sjedišta" : None, + "El. pomjeranje sjedišta" : None, + "Senzor auto. svjetla" : None, + "Alarm" : None, + "Daljinsko otključavanje" : None, + "Auto kuka" : None, + "Udaren" : None, + "Start-Stop sistem" : None, + "Park assist" : None, + "Registrovan" : None, + "Na lizingu" : None, + "Servisna knjiga" : None, + "Komande na volanu" : None, + "ABS" : None, + "Airbag" : None, + "Električni retrovizori" : None, + "Klima" : None, + "Navigacija" : None, + "Šiber" : None, + "Naslon za ruku" : None, + "Hlađenje sjedišta" : None, + "Grijanje sjedišta" : None, + "Memorija sjedišta" : None, + "Alu felge" : None, + "Centralna brava" : None, + "Oldtimer" : None, + "ISOFIX" : None, + "Datum" : None, + "Vrijeme" : None + } + + + + # Number of all items + broj_el = 0 + + ## Getting all id's of articles + for i in range(0, len(results_all_items_per_page)): + if(results_all_items_per_page[i].find('p')): + # Divide id from rest of link + address_content = results_all_items_per_page[i].find('a')['href'] + temp = address_content.split('/') + artikal_number = temp[4] + olx_id.append(artikal_number) + broj_el = broj_el + 1 + + for i in range(0, broj_el): + + # New dictionary instance for every item + podaci = filters.copy() + + # Add kategorija + if (category_of_vehicle == 18): podaci['Kategorija'] = ('Automobili') + + # Artikal olx_link + artikal_link = 'https://www.olx.ba/artikal/' + olx_id[i] + podaci["Olx_id"] = olx_id[i] + response_item = requests.get(artikal_link, headers=headers) + soup_item = BeautifulSoup(response_item.content, 'html.parser') + result_item = soup_item.find('div',{'class':'artikal_lijevo'}) + # print(artikal_link) + + + # Getting filters info from item + + # Osnovni filteri + + # Cijena + if (result_item.find('div',{'id':'pc'})): + x_cijena = result_item.find('div',{'id':'pc'}).findAll('p') + item_cijena = x_cijena[1].get_text().split()[0] + if(item_cijena == 'Po'): + item_cijena = "Po dogovoru" + podaci['Cijena'] = item_cijena + # print(podaci['Cijena']) + + # Lokacija + #kanton + if (result_item.find('div',{'class':'mobile-lokacija'})): + x_lokacija = result_item.find('div',{'class':'mobile-lokacija'})['data-content'].split() + item_kanton = x_lokacija[0].replace(',','') + podaci['Lokacija_kanton'] = item_kanton + # print(podaci['Lokacija_kanton']) + + #grad + x_lokacija.pop(0) + item_grad = x_lokacija + mojstring = ' '.join(item_grad) + podaci['Lokacija_grad'] = mojstring + # print(podaci['Lokacija_grad']) + + # Stanje + if (result_item.find('div',{'class':'mobile-stanje'})): + x_stanje = result_item.find('div',{'class':'mobile-stanje'}).get_text().split() + item_stanje = x_stanje[1] + podaci['Stanje'] = item_stanje + # print(podaci['Stanje']) + + # Ispod divs + if (result_item.find_all('div',{'class':'ispod'})): + ispod_divs = result_item.find_all('div',{'class':'ispod'}) + for i in range (len(ispod_divs)): + + # Proizvodjac + if (i==0): + x_proizvodjac_p = ispod_divs[0].find_all('p') + x_proizvodjac = x_proizvodjac_p[1].get_text() + podaci['Proizvođač'] = x_proizvodjac + # print(podaci['Proizvođač']) + + # Model + if (i==1): + x_model_p = ispod_divs[1].find_all('p') + x_model = x_model_p[1].get_text() + podaci['Model'] = x_model + # print(podaci['Model']) + + # Godiste + if (i==2): + x_godiste_p = ispod_divs[2].find_all('p') + x_godiste = x_godiste_p[1].get_text() + podaci['Godište'] = x_godiste + # print(podaci['Godište']) + + # Kilometraza + if (i==3): + x_kilometraza_p = ispod_divs[3].find_all('p') + x_kilometraza = x_kilometraza_p[1].get_text() + podaci['Kilometraža'] = x_kilometraza + # print(podaci['Kilometraža']) + + # Gorivo + if (i==4): + x_gorivo_p = ispod_divs[4].find_all('p') + x_gorivo = x_gorivo_p[1].get_text() + podaci['Gorivo'] = x_gorivo + # print(podaci['Gorivo']) + + + # Napredni filteri + + # Dodatna polja + if (result_item.find_all('div',{'id':'dodatnapolja1'})): + dodatnapolja_all_divs = result_item.find_all('div',{'id':'dodatnapolja1'}) + for i in range (0,len(dodatnapolja_all_divs)): + if(dodatnapolja_all_divs[i].find_all('div',{'class','df'})): + df_pom = dodatnapolja_all_divs[i].find_all('div',{'class','df'}) + for j in range (0,len(df_pom)): + df_pom1 = df_pom[j].find('div',{'class','df1'}).get_text() + if (df_pom[j].find('div',{'class','df2'}).find('i')): + df_pom2 = True + else : df_pom2 = df_pom[j].find('div',{'class','df2'}).get_text() + podaci[df_pom1] = df_pom2 + + # KW single + if podaci['Kilovata (KW)']: + kw = podaci['Kilovata (KW)'].split()[0] + podaci['Kilovata (KW)'] = kw + # print(kw) + + # Datum objave + if (result_item.find('time', {'class' : 'entry-date'})): + date_objave_div = result_item.find('time', {'class' : 'entry-date'}).get_text().split() + datum_objave = date_objave_div[0] + datum_objave = datum_objave.split('.') + datum_objave = datum_objave[2] + "-" + datum_objave[1] + "-" + datum_objave[0] + # print(datum_objave) + + + # Datum obnove + if (result_item.find('div', {'class' : 'ob'})): + datum_obnove_div = result_item.find('div', {'class' : 'ob'}).attrs + datum_vrijeme = datum_obnove_div["data-content"].split('.') + datum = datum_vrijeme[2] + "-" + datum_vrijeme[1] + "-" + datum_vrijeme[0] + if datum == 'None': + podaci["Datum"] = datum_objave + else: + # print(datum) + podaci["Datum"] = datum + # podaci["Vrijeme"] = vrijeme + + + + + # Insert datas to database + dictionary_copy = podaci.copy() + podaci_db.append(dictionary_copy) + + print("Zavrseno!") + return podaci_db + + + + +# ------------- CREATE PANDAS DATAFRAME - DICTIONARY -------------- + +# olx_db = pd.DataFrame(podaci_db) # treba biti niz +# # print(olx_db) + +# olx_db.to_excel('proba231112.xlsx',index=False) + + + + + + + + + + + + + + + + + + diff --git a/kivi_cars/cars/migrations/0001_initial.py b/kivi_cars/cars/migrations/0001_initial.py index 6e75642..2fd4929 100644 --- a/kivi_cars/cars/migrations/0001_initial.py +++ b/kivi_cars/cars/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.0.4 on 2022-05-16 04:55 +# Generated by Django 4.0.4 on 2022-05-28 05:43 from django.db import migrations, models @@ -15,85 +15,84 @@ class Migration(migrations.Migration): name='Car', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('Olx_id', models.CharField(max_length=10)), - ('Kategorija', models.CharField(max_length=30)), - ('Cijena', models.CharField(max_length=30)), - ('Stanje', models.CharField(max_length=30)), - ('Lokacija_kanton', models.CharField(max_length=50)), - ('Lokacija_grad', models.CharField(max_length=50)), - ('Proizvođač', models.CharField(max_length=30)), - ('Model', models.CharField(max_length=30)), - ('Godište', models.CharField(max_length=30)), - ('Kilometraža', models.CharField(max_length=30)), - ('Kilovata_KW', models.CharField(max_length=30)), - ('Kubikaža', models.CharField(max_length=30)), - ('Gorivo', models.CharField(max_length=30)), - ('Broj_vrata', models.CharField(max_length=30)), - ('Konjskih_snaga', models.CharField(max_length=30)), - ('Metalik', models.CharField(max_length=30)), - ('Masa_Težina_kg', models.CharField(max_length=30)), - ('Tip', models.CharField(max_length=30)), - ('Pogon', models.CharField(max_length=30)), - ('Emisioni_standard', models.CharField(max_length=30)), - ('Veličina_felgi', models.CharField(max_length=30)), - ('Transmisija', models.CharField(max_length=30)), - ('Broj_stepeni_prijenosa', models.CharField(max_length=30)), - ('Boja', models.CharField(max_length=30)), - ('Muzika_ozvučenje', models.CharField(max_length=30)), - ('Parking_senzori', models.CharField(max_length=30)), - ('Parking_kamera', models.CharField(max_length=30)), - ('Registrovan_do', models.CharField(max_length=30)), - ('Godina_prve_registracije', models.CharField(max_length=30)), - ('Broj_prethodnih_vlasnik', models.CharField(max_length=30)), - ('Posjeduje_gume', models.CharField(max_length=30)), - ('Višezonska_klima', models.CharField(max_length=30)), - ('Rolo_zavjese', models.CharField(max_length=30)), - ('Svjetla', models.CharField(max_length=30)), - ('Zaštita_Blokada', models.CharField(max_length=30)), - ('Sjedećih_mjesta', models.CharField(max_length=30)), - ('Turbo', models.CharField(max_length=30)), - ('DPF_FAP_filter', models.CharField(max_length=30)), - ('Strane_tablice', models.CharField(max_length=30)), - ('Ocarinjen', models.CharField(max_length=30)), - ('Prilagođen_invalidima', models.CharField(max_length=30)), - ('Servo_volan', models.CharField(max_length=30)), - ('Tempomat', models.CharField(max_length=30)), - ('ESP', models.CharField(max_length=30)), - ('El_podizači_stakala', models.CharField(max_length=30)), - ('Senzor_mrtvog_ugla', models.CharField(max_length=30)), - ('Digitalna_klima', models.CharField(max_length=30)), - ('Touch_screen_ekran', models.CharField(max_length=30)), - ('Panorama_krov', models.CharField(max_length=30)), - ('Koža', models.CharField(max_length=30)), - ('Masaža_sjedišta', models.CharField(max_length=30)), - ('El_pomjeranje_sjedišta', models.CharField(max_length=30)), - ('Senzor_auto_svjetla', models.CharField(max_length=30)), - ('Alarm', models.CharField(max_length=30)), - ('Daljinsko_otključavanje', models.CharField(max_length=30)), - ('Auto_kuka', models.CharField(max_length=30)), - ('Udaren', models.CharField(max_length=30)), - ('Start_Stop_sistem', models.CharField(max_length=30)), - ('Park_assist', models.CharField(max_length=30)), - ('Registrovan', models.CharField(max_length=30)), - ('Na_lizingu', models.CharField(max_length=30)), - ('Servisna_knjiga', models.CharField(max_length=30)), - ('Komande_na_volanu', models.CharField(max_length=30)), - ('ABS', models.CharField(max_length=30)), - ('Airbag', models.CharField(max_length=30)), - ('Električni_retrovizori', models.CharField(max_length=30)), - ('Klima', models.CharField(max_length=30)), - ('Navigacija', models.CharField(max_length=30)), - ('Šiber', models.CharField(max_length=30)), - ('Naslon_za_ruku', models.CharField(max_length=30)), - ('Hlađenje_sjedišta', models.CharField(max_length=30)), - ('Grijanje_sjedišta', models.CharField(max_length=30)), - ('Memorija_sjedišta', models.CharField(max_length=30)), - ('Alu_felge', models.CharField(max_length=30)), - ('Centralna_brava', models.CharField(max_length=30)), - ('Oldtimer', models.CharField(max_length=30)), - ('ISOFIX', models.CharField(max_length=30)), - ('Datum', models.DateField()), - ('Vrijeme', models.TimeField()), + ('Olx_id', models.CharField(max_length=10, null=True)), + ('Kategorija', models.CharField(max_length=30, null=True)), + ('Cijena', models.CharField(max_length=30, null=True)), + ('Stanje', models.CharField(max_length=30, null=True)), + ('Lokacija_kanton', models.CharField(max_length=50, null=True)), + ('Lokacija_grad', models.CharField(max_length=50, null=True)), + ('Proizvođač', models.CharField(max_length=30, null=True)), + ('Model', models.CharField(max_length=30, null=True)), + ('Godište', models.CharField(max_length=30, null=True)), + ('Kilometraža', models.CharField(max_length=30, null=True)), + ('Kilovata_KW', models.CharField(max_length=30, null=True)), + ('Kubikaža', models.CharField(max_length=30, null=True)), + ('Gorivo', models.CharField(max_length=30, null=True)), + ('Broj_vrata', models.CharField(max_length=30, null=True)), + ('Konjskih_snaga', models.CharField(max_length=30, null=True)), + ('Metalik', models.CharField(max_length=30, null=True)), + ('Masa_Težina_kg', models.CharField(max_length=30, null=True)), + ('Tip', models.CharField(max_length=30, null=True)), + ('Pogon', models.CharField(max_length=30, null=True)), + ('Emisioni_standard', models.CharField(max_length=30, null=True)), + ('Veličina_felgi', models.CharField(max_length=30, null=True)), + ('Transmisija', models.CharField(max_length=30, null=True)), + ('Broj_stepeni_prijenosa', models.CharField(max_length=30, null=True)), + ('Boja', models.CharField(max_length=30, null=True)), + ('Muzika_ozvučenje', models.CharField(max_length=30, null=True)), + ('Parking_senzori', models.CharField(max_length=30, null=True)), + ('Parking_kamera', models.CharField(max_length=30, null=True)), + ('Registrovan_do', models.CharField(max_length=30, null=True)), + ('Godina_prve_registracije', models.CharField(max_length=30, null=True)), + ('Broj_prethodnih_vlasnika', models.CharField(max_length=30, null=True)), + ('Posjeduje_gume', models.CharField(max_length=30, null=True)), + ('Višezonska_klima', models.CharField(max_length=30, null=True)), + ('Rolo_zavjese', models.CharField(max_length=30, null=True)), + ('Svjetla', models.CharField(max_length=30, null=True)), + ('Zaštita_Blokada', models.CharField(max_length=30, null=True)), + ('Sjedećih_mjesta', models.CharField(max_length=30, null=True)), + ('Turbo', models.CharField(max_length=30, null=True)), + ('DPF_FAP_filter', models.CharField(max_length=30, null=True)), + ('Strane_tablice', models.CharField(max_length=30, null=True)), + ('Ocarinjen', models.CharField(max_length=30, null=True)), + ('Prilagođen_invalidima', models.CharField(max_length=30, null=True)), + ('Servo_volan', models.CharField(max_length=30, null=True)), + ('Tempomat', models.CharField(max_length=30, null=True)), + ('ESP', models.CharField(max_length=30, null=True)), + ('El_podizači_stakala', models.CharField(max_length=30, null=True)), + ('Senzor_mrtvog_ugla', models.CharField(max_length=30, null=True)), + ('Digitalna_klima', models.CharField(max_length=30, null=True)), + ('Touch_screen_ekran', models.CharField(max_length=30, null=True)), + ('Panorama_krov', models.CharField(max_length=30, null=True)), + ('Koža', models.CharField(max_length=30, null=True)), + ('Masaža_sjedišta', models.CharField(max_length=30, null=True)), + ('El_pomjeranje_sjedišta', models.CharField(max_length=30, null=True)), + ('Senzor_auto_svjetla', models.CharField(max_length=30, null=True)), + ('Alarm', models.CharField(max_length=30, null=True)), + ('Daljinsko_otključavanje', models.CharField(max_length=30, null=True)), + ('Auto_kuka', models.CharField(max_length=30, null=True)), + ('Udaren', models.CharField(max_length=30, null=True)), + ('Start_Stop_sistem', models.CharField(max_length=30, null=True)), + ('Park_assist', models.CharField(max_length=30, null=True)), + ('Registrovan', models.CharField(max_length=30, null=True)), + ('Na_lizingu', models.CharField(max_length=30, null=True)), + ('Servisna_knjiga', models.CharField(max_length=30, null=True)), + ('Komande_na_volanu', models.CharField(max_length=30, null=True)), + ('ABS', models.CharField(max_length=30, null=True)), + ('Airbag', models.CharField(max_length=30, null=True)), + ('Električni_retrovizori', models.CharField(max_length=30, null=True)), + ('Klima', models.CharField(max_length=30, null=True)), + ('Navigacija', models.CharField(max_length=30, null=True)), + ('Šiber', models.CharField(max_length=30, null=True)), + ('Naslon_za_ruku', models.CharField(max_length=30, null=True)), + ('Hlađenje_sjedišta', models.CharField(max_length=30, null=True)), + ('Grijanje_sjedišta', models.CharField(max_length=30, null=True)), + ('Memorija_sjedišta', models.CharField(max_length=30, null=True)), + ('Alu_felge', models.CharField(max_length=30, null=True)), + ('Centralna_brava', models.CharField(max_length=30, null=True)), + ('Oldtimer', models.CharField(max_length=30, null=True)), + ('ISOFIX', models.CharField(max_length=30, null=True)), + ('Datum', models.CharField(max_length=15, null=True)), ], ), ] diff --git a/kivi_cars/cars/models.py b/kivi_cars/cars/models.py index d1b3735..5df52ed 100644 --- a/kivi_cars/cars/models.py +++ b/kivi_cars/cars/models.py @@ -2,83 +2,86 @@ from django.db import models # Create your models here. -class Car (models.Model): - Olx_id = models.CharField(max_length=10) - Kategorija = models.CharField(max_length=30) - Cijena = models.CharField(max_length=30) - Stanje = models.CharField(max_length=30) - Lokacija_kanton = models.CharField(max_length=50) - Lokacija_grad = models.CharField(max_length=50) - Proizvođač = models.CharField(max_length=30) - Model = models.CharField(max_length=30) - Godište = models.CharField(max_length=30) - Kilometraža = models.CharField(max_length=30) - Kilovata_KW = models.CharField(max_length=30) - Kubikaža = models.CharField(max_length=30) - Gorivo = models.CharField(max_length=30) - Broj_vrata = models.CharField(max_length=30) - Konjskih_snaga = models.CharField(max_length=30) - Metalik = models.CharField(max_length=30) - Masa_Težina_kg = models.CharField(max_length=30) - Tip = models.CharField(max_length=30) - Pogon = models.CharField(max_length=30) - Emisioni_standard = models.CharField(max_length=30) - Veličina_felgi = models.CharField(max_length=30) - Transmisija = models.CharField(max_length=30) - Broj_stepeni_prijenosa = models.CharField(max_length=30) - Boja = models.CharField(max_length=30) - Muzika_ozvučenje = models.CharField(max_length=30) - Parking_senzori= models.CharField(max_length=30) - Parking_kamera = models.CharField(max_length=30) - Registrovan_do = models.CharField(max_length=30) - Godina_prve_registracije = models.CharField(max_length=30) - Broj_prethodnih_vlasnik = models.CharField(max_length=30) - Posjeduje_gume = models.CharField(max_length=30) - Višezonska_klima = models.CharField(max_length=30) - Rolo_zavjese = models.CharField(max_length=30) - Svjetla = models.CharField(max_length=30) - Zaštita_Blokada = models.CharField(max_length=30) - Sjedećih_mjesta = models.CharField(max_length=30) - Turbo = models.CharField(max_length=30) - DPF_FAP_filter = models.CharField(max_length=30) - Strane_tablice = models.CharField(max_length=30) - Ocarinjen = models.CharField(max_length=30) - Prilagođen_invalidima = models.CharField(max_length=30) - Servo_volan = models.CharField(max_length=30) - Tempomat = models.CharField(max_length=30) - ESP = models.CharField(max_length=30) - El_podizači_stakala = models.CharField(max_length=30) - Senzor_mrtvog_ugla = models.CharField(max_length=30) - Digitalna_klima = models.CharField(max_length=30) - Touch_screen_ekran = models.CharField(max_length=30) - Panorama_krov = models.CharField(max_length=30) - Koža = models.CharField(max_length=30) - Masaža_sjedišta = models.CharField(max_length=30) - El_pomjeranje_sjedišta= models.CharField(max_length=30) - Senzor_auto_svjetla = models.CharField(max_length=30) - Alarm = models.CharField(max_length=30) - Daljinsko_otključavanje = models.CharField(max_length=30) - Auto_kuka = models.CharField(max_length=30) - Udaren = models.CharField(max_length=30) - Start_Stop_sistem = models.CharField(max_length=30) - Park_assist = models.CharField(max_length=30) - Registrovan = models.CharField(max_length=30) - Na_lizingu = models.CharField(max_length=30) - Servisna_knjiga = models.CharField(max_length=30) - Komande_na_volanu = models.CharField(max_length=30) - ABS = models.CharField(max_length=30) - Airbag = models.CharField(max_length=30) - Električni_retrovizori = models.CharField(max_length=30) - Klima = models.CharField(max_length=30) - Navigacija = models.CharField(max_length=30) - Šiber= models.CharField(max_length=30) - Naslon_za_ruku= models.CharField(max_length=30) - Hlađenje_sjedišta = models.CharField(max_length=30) - Grijanje_sjedišta = models.CharField(max_length=30) - Memorija_sjedišta = models.CharField(max_length=30) - Alu_felge = models.CharField(max_length=30) - Centralna_brava = models.CharField(max_length=30) - Oldtimer = models.CharField(max_length=30) - ISOFIX = models.CharField(max_length=30) - Datum = models.DateField() - Vrijeme = models.TimeField() \ No newline at end of file +class Car(models.Model): + Olx_id = models.CharField(max_length=10, null=True) + Kategorija = models.CharField(max_length=30, null=True) + Cijena = models.CharField(max_length=30, null=True) + Stanje = models.CharField(max_length=30, null=True) + Lokacija_kanton = models.CharField(max_length=50, null=True) + Lokacija_grad = models.CharField(max_length=50, null=True) + Proizvođač = models.CharField(max_length=30, null=True) + Model = models.CharField(max_length=30, null=True) + Godište = models.CharField(max_length=30, null=True) + Kilometraža = models.CharField(max_length=30, null=True) + Kilovata_KW = models.CharField(max_length=30, null=True) + Kubikaža = models.CharField(max_length=30, null=True) + Gorivo = models.CharField(max_length=30, null=True) + Broj_vrata = models.CharField(max_length=30, null=True) + Konjskih_snaga = models.CharField(max_length=30, null=True) + Metalik = models.CharField(max_length=30, null=True) + Masa_Težina_kg = models.CharField(max_length=30, null=True) + Tip = models.CharField(max_length=30, null=True) + Pogon = models.CharField(max_length=30, null=True) + Emisioni_standard = models.CharField(max_length=30, null=True) + Veličina_felgi = models.CharField(max_length=30, null=True) + Transmisija = models.CharField(max_length=30, null=True) + Broj_stepeni_prijenosa = models.CharField(max_length=30, null=True) + Boja = models.CharField(max_length=30, null=True) + Muzika_ozvučenje = models.CharField(max_length=30, null=True) + Parking_senzori= models.CharField(max_length=30, null=True) + Parking_kamera = models.CharField(max_length=30, null=True) + Registrovan_do = models.CharField(max_length=30, null=True) + Godina_prve_registracije = models.CharField(max_length=30, null=True) + Broj_prethodnih_vlasnika = models.CharField(max_length=30, null=True) + Posjeduje_gume = models.CharField(max_length=30, null=True) + Višezonska_klima = models.CharField(max_length=30, null=True) + Rolo_zavjese = models.CharField(max_length=30, null=True) + Svjetla = models.CharField(max_length=30, null=True) + Zaštita_Blokada = models.CharField(max_length=30, null=True) + Sjedećih_mjesta = models.CharField(max_length=30, null=True) + Turbo = models.CharField(max_length=30, null=True) + DPF_FAP_filter = models.CharField(max_length=30, null=True) + Strane_tablice = models.CharField(max_length=30, null=True) + Ocarinjen = models.CharField(max_length=30, null=True) + Prilagođen_invalidima = models.CharField(max_length=30, null=True) + Servo_volan = models.CharField(max_length=30, null=True) + Tempomat = models.CharField(max_length=30, null=True) + ESP = models.CharField(max_length=30, null=True) + El_podizači_stakala = models.CharField(max_length=30, null=True) + Senzor_mrtvog_ugla = models.CharField(max_length=30, null=True) + Digitalna_klima = models.CharField(max_length=30, null=True) + Touch_screen_ekran = models.CharField(max_length=30, null=True) + Panorama_krov = models.CharField(max_length=30, null=True) + Koža = models.CharField(max_length=30, null=True) + Masaža_sjedišta = models.CharField(max_length=30, null=True) + El_pomjeranje_sjedišta= models.CharField(max_length=30, null=True) + Senzor_auto_svjetla = models.CharField(max_length=30, null=True) + Alarm = models.CharField(max_length=30, null=True) + Daljinsko_otključavanje = models.CharField(max_length=30, null=True) + Auto_kuka = models.CharField(max_length=30, null=True) + Udaren = models.CharField(max_length=30, null=True) + Start_Stop_sistem = models.CharField(max_length=30, null=True) + Park_assist = models.CharField(max_length=30, null=True) + Registrovan = models.CharField(max_length=30, null=True) + Na_lizingu = models.CharField(max_length=30, null=True) + Servisna_knjiga = models.CharField(max_length=30, null=True) + Komande_na_volanu = models.CharField(max_length=30, null=True) + ABS = models.CharField(max_length=30, null=True) + Airbag = models.CharField(max_length=30, null=True) + Električni_retrovizori = models.CharField(max_length=30, null=True) + Klima = models.CharField(max_length=30, null=True) + Navigacija = models.CharField(max_length=30, null=True) + Šiber= models.CharField(max_length=30, null=True) + Naslon_za_ruku= models.CharField(max_length=30, null=True) + Hlađenje_sjedišta = models.CharField(max_length=30, null=True) + Grijanje_sjedišta = models.CharField(max_length=30, null=True) + Memorija_sjedišta = models.CharField(max_length=30, null=True) + Alu_felge = models.CharField(max_length=30, null=True) + Centralna_brava = models.CharField(max_length=30, null=True) + Oldtimer = models.CharField(max_length=30, null=True) + ISOFIX = models.CharField(max_length=30, null=True) + Datum = models.CharField(max_length=15, null=True) + # Vrijeme = models.CharField(max_length=20, blank=True) + + def __str__(self): + return (self.Olx_id) \ No newline at end of file diff --git a/kivi_cars/cars/saver.py b/kivi_cars/cars/saver.py new file mode 100644 index 0000000..f27ef2b --- /dev/null +++ b/kivi_cars/cars/saver.py @@ -0,0 +1,197 @@ +import time +from cars.crawler import CarsCrawler +from cars.models import Car + +#if num_of_crawl is 0 --> first start --> crawl all pages +#if num_of_crawl is 1 --> second and others --> crawl just 2 pages + +num_of_crawl = 0 + + + +while True: + def Saver(): + print("_________________________________") + global num_of_crawl + if num_of_crawl == 0: + cars = CarsCrawler(5) + num_of_crawl += 1 + else: + cars = CarsCrawler(2) + + # print(len(cars)) + for car in cars: + print(car["Datum"], car["Olx_id"]) + if Car.objects.all().filter(Olx_id = car["Olx_id"], Datum = car["Datum"]).exists(): + print("Artikal postoji") + continue + + try: + auto = Car.objects.get(Olx_id = car["Olx_id"]) + auto.Kategorija = car["Kategorija"] + auto.Cijena = car["Cijena"] + auto.Stanje = car["Stanje"] + auto.Lokacija_kanton = car["Lokacija_kanton"] + auto.Lokacija_grad = car["Lokacija_grad"] + auto.Proizvođač = car["Proizvođač"] + auto.Model = car["Model"] + auto.Godište = car["Godište"] + auto.Kilometraža = car["Kilometraža"] + auto.Kilovata_KW = car["Kilovata (KW)"] + auto.Kubikaža = car["Kubikaža"] + auto.Gorivo = car["Gorivo"] + auto.Broj_vrata = car["Broj vrata"] + auto.Konjskih_snaga = car["Konjskih snaga"] + auto.Metalik = car["Metalik"] + auto.Masa_Težina_kg = car["Masa/Težina (kg)"] + auto.Tip = car["Tip"] + auto.Pogon = car["Pogon"] + auto.Emisioni_standard = car["Emisioni standard"] + auto.Veličina_felgi = car["Veličina felgi"] + auto.Transmisija = car["Transmisija"] + auto.Broj_stepeni_prijenosa = car["Broj stepeni prijenosa"] + auto.Boja = car["Boja"] + auto.Muzika_ozvučenje = car["Muzika / ozvučenje"] + auto.Parking_senzori = car["Parking senzori"] + auto.Parking_kamera = car["Parking kamera"] + auto.Registrovan_do = car["Registrovan do"] + auto.Godina_prve_registracije = car["Godina prve registracije"] + auto.Broj_prethodnih_vlasnika = car["Broj prethodnih vlasnika"] + auto.Posjeduje_gume = car["Posjeduje gume"] + auto.Višezonska_klima = car["Višezonska klima"] + auto.Rolo_zavjese = car["Rolo zavjese"] + auto.Svjetla = car["Svjetla"] + auto.Zaštita_Blokada = car["Zaštita/Blokada"] + auto.Sjedećih_mjesta = car["Sjedećih mjesta"] + auto.Turbo = car["Turbo"] + auto.DPF_FAP_filter = car["DPF/FAP filter"] + auto.Strane_tablice = car["Strane tablice"] + auto.Ocarinjen = car["Ocarinjen"] + auto.Prilagođen_invalidima = car["Prilagođen invalidima"] + auto.Servo_volan = car["Servo volan"] + auto.Tempomat = car["Tempomat"] + auto.ESP = car["ESP"] + auto.El_podizači_stakala = car["El. podizači stakala"] + auto.Senzor_mrtvog_ugla = car["Senzor mrtvog ugla"] + auto.Digitalna_klima = car["Digitalna klima"] + auto.Touch_screen_ekran = car["Touch screen (ekran)"] + auto.Panorama_krov = car["Panorama krov"] + auto.Koža = car["Koža"] + auto.Masaža_sjedišta = car["Masaža sjedišta"] + auto.El_pomjeranje_sjedišta= car["El. pomjeranje sjedišta"] + auto.Senzor_auto_svjetla = car["Senzor auto. svjetla"] + auto.Alarm = car["Alarm"] + auto.Daljinsko_otključavanje = car["Daljinsko otključavanje"] + auto.Auto_kuka = car["Auto kuka"] + auto.Udaren = car["Udaren"] + auto.Start_Stop_sistem = car["Start-Stop sistem"] + auto.Park_assist = car["Park assist"] + auto.Registrovan = car["Registrovan"] + auto.Na_lizingu = car["Na lizingu"] + auto.Servisna_knjiga = car["Servisna knjiga"] + auto.Komande_na_volanu = car["Komande na volanu"] + auto.ABS = car["ABS"] + auto.Airbag = car["Airbag"] + auto.Električni_retrovizori = car["Električni retrovizori"] + auto.Klima = car["Klima"] + auto.Navigacija = car["Navigacija"] + auto.Šiber = car["Šiber"] + auto.Naslon_za_ruku= car["Naslon za ruku"] + auto.Hlađenje_sjedišta = car["Hlađenje sjedišta"] + auto.Grijanje_sjedišta = car["Grijanje sjedišta"] + auto.Memorija_sjedišta = car["Memorija sjedišta"] + auto.Alu_felge = car["Alu felge"] + auto.Centralna_brava = car["Centralna brava"] + auto.Oldtimer = car["Oldtimer"] + auto.ISOFIX = car["ISOFIX"] + auto.Datum = car["Datum"] + auto.save() + print("Artikal obnovljen") + + except Car.DoesNotExist: + auto = Car.objects.create( + Olx_id = car["Olx_id"], + Kategorija = car["Kategorija"], + Cijena = car["Cijena"], + Stanje = car["Stanje"], + Lokacija_kanton = car["Lokacija_kanton"], + Lokacija_grad = car["Lokacija_grad"], + Proizvođač = car["Proizvođač"], + Model = car["Model"], + Godište = car["Godište"], + Kilometraža = car["Kilometraža"], + Kilovata_KW = car["Kilovata (KW)"], + Kubikaža = car["Kubikaža"], + Gorivo = car["Gorivo"], + Broj_vrata = car["Broj vrata"], + Konjskih_snaga = car["Konjskih snaga"], + Metalik = car["Metalik"], + Masa_Težina_kg = car["Masa/Težina (kg)"], + Tip = car["Tip"], + Pogon = car["Pogon"], + Emisioni_standard = car["Emisioni standard"], + Veličina_felgi = car["Veličina felgi"], + Transmisija = car["Transmisija"], + Broj_stepeni_prijenosa = car["Broj stepeni prijenosa"], + Boja = car["Boja"], + Muzika_ozvučenje = car["Muzika / ozvučenje"], + Parking_senzori = car["Parking senzori"], + Parking_kamera = car["Parking kamera"], + Registrovan_do = car["Registrovan do"], + Godina_prve_registracije = car["Godina prve registracije"], + Broj_prethodnih_vlasnika = car["Broj prethodnih vlasnika"], + Posjeduje_gume = car["Posjeduje gume"], + Višezonska_klima = car["Višezonska klima"], + Rolo_zavjese = car["Rolo zavjese"], + Svjetla = car["Svjetla"], + Zaštita_Blokada = car["Zaštita/Blokada"], + Sjedećih_mjesta = car["Sjedećih mjesta"], + Turbo = car["Turbo"], + DPF_FAP_filter = car["DPF/FAP filter"], + Strane_tablice = car["Strane tablice"], + Ocarinjen = car["Ocarinjen"], + Prilagođen_invalidima = car["Prilagođen invalidima"], + Servo_volan = car["Servo volan"], + Tempomat = car["Tempomat"], + ESP = car["ESP"], + El_podizači_stakala = car["El. podizači stakala"], + Senzor_mrtvog_ugla = car["Senzor mrtvog ugla"], + Digitalna_klima = car["Digitalna klima"], + Touch_screen_ekran = car["Touch screen (ekran)"], + Panorama_krov = car["Panorama krov"], + Koža = car["Koža"], + Masaža_sjedišta = car["Masaža sjedišta"], + El_pomjeranje_sjedišta= car["El. pomjeranje sjedišta"], + Senzor_auto_svjetla = car["Senzor auto. svjetla"], + Alarm = car["Alarm"], + Daljinsko_otključavanje = car["Daljinsko otključavanje"], + Auto_kuka = car["Auto kuka"], + Udaren = car["Udaren"], + Start_Stop_sistem = car["Start-Stop sistem"], + Park_assist = car["Park assist"], + Registrovan = car["Registrovan"], + Na_lizingu = car["Na lizingu"], + Servisna_knjiga = car["Servisna knjiga"], + Komande_na_volanu = car["Komande na volanu"], + ABS = car["ABS"], + Airbag = car["Airbag"], + Električni_retrovizori = car["Električni retrovizori"], + Klima = car["Klima"], + Navigacija = car["Navigacija"], + Šiber = car["Šiber"], + Naslon_za_ruku= car["Naslon za ruku"], + Hlađenje_sjedišta = car["Hlađenje sjedišta"], + Grijanje_sjedišta = car["Grijanje sjedišta"], + Memorija_sjedišta = car["Memorija sjedišta"], + Alu_felge = car["Alu felge"], + Centralna_brava = car["Centralna brava"], + Oldtimer = car["Oldtimer"], + ISOFIX = car["ISOFIX"], + Datum = car["Datum"], + # Vrijeme = car["Vrijeme"] + ) + auto.save() + print("Novi artikal je spasen") + print("___________________________") + Saver() + time.sleep(120) \ No newline at end of file diff --git a/kivi_cars/cars/views.py b/kivi_cars/cars/views.py index 91ea44a..27cdb63 100644 --- a/kivi_cars/cars/views.py +++ b/kivi_cars/cars/views.py @@ -1,3 +1,4 @@ from django.shortcuts import render # Create your views here. + diff --git a/kivi_cars/kivi_cars/settings.py b/kivi_cars/kivi_cars/settings.py index d46c43f..27ed46d 100644 --- a/kivi_cars/kivi_cars/settings.py +++ b/kivi_cars/kivi_cars/settings.py @@ -84,7 +84,7 @@ DATABASES = { 'NAME': 'kivi_cars', 'USER': 'postgres', 'HOST': 'localhost', - 'PASSWORD': 'postgres' + 'PASSWORD': 'b18' } } diff --git a/kivi_cars/kivi_cars/urls.py b/kivi_cars/kivi_cars/urls.py index e874ea1..b33eb8d 100644 --- a/kivi_cars/kivi_cars/urls.py +++ b/kivi_cars/kivi_cars/urls.py @@ -16,8 +16,10 @@ Including another URLconf from django.urls.conf import include from django.contrib import admin from django.urls import path +from cars.saver import Saver urlpatterns = [ path('admin/', admin.site.urls), path('generator/', include("Generator.urls")), ] + diff --git a/proba2.xlsx b/proba2.xlsx new file mode 100644 index 0000000..2e18cce Binary files /dev/null and b/proba2.xlsx differ diff --git a/proba3.xlsx b/proba3.xlsx new file mode 100644 index 0000000..38fa3c4 Binary files /dev/null and b/proba3.xlsx differ diff --git a/proba4.xlsx b/proba4.xlsx new file mode 100644 index 0000000..3b6c009 Binary files /dev/null and b/proba4.xlsx differ