fix crawler and saver bugs
This commit is contained in:
@@ -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!!")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
327
kivi_cars/cars/crawler.py
Normal file
327
kivi_cars/cars/crawler.py
Normal file
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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)),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
@@ -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()
|
||||
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)
|
||||
197
kivi_cars/cars/saver.py
Normal file
197
kivi_cars/cars/saver.py
Normal file
@@ -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)
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ DATABASES = {
|
||||
'NAME': 'kivi_cars',
|
||||
'USER': 'postgres',
|
||||
'HOST': 'localhost',
|
||||
'PASSWORD': 'postgres'
|
||||
'PASSWORD': 'b18'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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")),
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user