This commit is contained in:
2023-11-27 03:45:23 +01:00
parent c81acebd9a
commit 57cdc465b8

View File

@@ -9,13 +9,6 @@ import re
import os
import shutil
#Inizializzo liste
nome=[]
desc=[]
npezzi=[]
prezzo=[]
prezzoN=[]
restaurant_url=''
def inputurl():
@@ -25,50 +18,29 @@ def inputurl():
print ("\nesempio: https://www.justeat.it/restaurants-pizzeria-la-garganica-bologna/menu")
restaurant_url = input('INSERISCI IL LINK DELLA PAGINA DEL RISTORANTE: ')
#PER DEBUG
#restaurant_url = 'https://www.justeat.it/restaurants-dolceirnerio/menu'
#restaurant_url = 'https://www.justeat.it/restaurants-pizzeriadelrondone-bologna/menu'
# if os.path.exists('rubrica.txt'):
# if os.path.exists('./DATI_RUBRICA'):
inputurl()
# wr = input('\nVuoi vedere la rubrica? [Y|N] ')
# if wr.upper() in ['YES', 'Y', 'SI', 'S']:
# print( '\n', os.listdir('./DATI_RUBRICA'), '\n')
# scelta = input("Scegli un numero esistente o premi Enter per metterre un link: ")
# files = os.listdir('./DATI_RUBRICA/')
# for file in files:
# if scelta in file:
# restaurant_url = (file)
# else:
# print ("numero inesistente")
# inputurl()
# else:
# inputurl()
# else:
# inputurl()
# else:
# inputurl()
#SCRAPE
driver = webdriver.Chrome()
driver.get(restaurant_url)
wait = WebDriverWait(driver, 16)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "c-menuItems-price")))
page = driver.page_source
with open('JEmenu.html', 'w') as f:
f.write(page)
#PARSER
with open('JEmenu.html', 'r') as f:
page = f.read()
soup = BeautifulSoup(page, "html.parser")
nome=[]
desc=[]
npezzi=[]
prezzo=[]
prezzoN=[]
nrist=''
restaurant_address=''
tel=''
result=''
def stora_tutto():
global nome
global desc
global npezzi
global prezzo
global prezzoN
global soup
global nrist
global restaurant_address
global tel
global result
#Stora nome ristorante
nrist = soup.title.text[8:-32]
@@ -132,10 +104,49 @@ for menu in soup.find_all(attrs={"data-test-id": "menu-item"}):
npezzi.append(None)
continue
#Chiude chromium
driver.quit()
# #stampa liste
driver=''
page = ''
def scraper():
global driver
global page
global restaurant_url
driver = webdriver.Chrome()
driver.get(restaurant_url)
wait = WebDriverWait(driver, 16)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "c-menuItems-price")))
page = driver.page_source
with open('JEmenu.html', 'w') as f:
f.write(page)
soup = ''
def parser():
global soup
with open('JEmenu.html', 'r') as f:
page = f.read()
soup = BeautifulSoup(page, "html.parser")
def parserdarubrica():
global parser
global stora_tutto
folder_path = ('./DATI_RUBRICA/')
for filename in os.listdir(folder_path):
if filename.startswith(scelta):
print(filename)
filename = filename.replace(' ', ' ')
print(filename)
shutil.copy (folder_path + filename, f'./JEmenu.html')
parser()
stora_tutto()
else:
print ("numero inesistente")
continue
def stampa_liste():
print("\n")
for x in range(len(nome)):
# print("\n")
@@ -144,7 +155,7 @@ for x in range(len(nome)):
print(npezzi[x])
print(prezzo[x])
#stampa info ristorante
def stampa_info():
print("-" * (len(desc)) + "\n")
print(nrist)
print(restaurant_address.strip())
@@ -162,7 +173,7 @@ for i in range(len(result)):
doppione = (result[i+1])
print("\n" + "-" * (len(desc))+ "\n")
def genera_prezzoN():
#Genera la lista prezzoN[] che è un clone di "prezzo[] ma con i valori float anzichè string"
prezzoN = prezzo.copy()
for i in range(len(prezzo)):
@@ -175,56 +186,8 @@ for i in range(len(prezzo)):
prezzoN[i] = 99999
# #PER DEBUG
# for x in range(len(nome)):
# print(prezzoN[x])
# print("\n" + "-" * 25 + "\n")
# print ("lista prezzo: ",len(prezzo))
# print ("lista prezzoN: ",len(prezzoN))
# print ("lista nome: ",len(nome))
# print("\n" + "-" * 25 + "\n")
# #PER DEBUG
# #stampa lunghezza liste
# print("lista nome: ",len(nome))
# print("lista desc: ",len(desc))
# print("lista npezzi: ",len(npezzi))
# print("lista prezzi: ",len(prezzo)) #sono stringhe"
# print("\n" + "-" * 25 + "\n")
# # Genera codice HTML
# html = "<html><body>"
# for x in range(len(nome)):
# html += "<h2>" + nome[x] + "</h2>"
# html += "<p>" + str(desc[x]) + "</p>"
# html += "<p>N. pezzi disponibili: " + str(npezzi[x]) + "</p>"
# html += "<p>Prezzo: €" + str(prezzoN[x]) + "</p>"
# html += "<button onclick=\"aggiungiProdotto('" + nome[x] + "', '" + str(prezzoN[x]) + "')\">+1</button>"
# html += "<br><br>"
# html += "<br><hr><h2>Prodotti aggiunti</h2>"
# html += "<div id=\"prodottiAggiunti\"></div>"
# html += "<script>"
# html += "function aggiungiProdotto(nome, prezzoN) {"
# html += " var prodotto = nome + ' (€' + Number(prezzo).toFixed(2) + ')';"
# html += " var box = document.getElementById('prodottiAggiunti');"
# html += " box.innerHTML += '<p>' + prodotto + '</p>';"
# html += "}"
# html += "</script>"
# html += "</body></html>"
# # Salvataggio su file
# with open("pagina.html", "w") as file:
# file.write(html)
#PROPORRE DI SALVARE IN RUBRICA
def salvainrubrica():
maxn=0
def trova_nuovo_numero():
global maxn
@@ -288,3 +251,89 @@ else:
#PULISCE
os.remove("JEmenu.html")
os.remove("rubrica.txt")
#############################################################################################
#############################################################################################
#############################################################################################
if os.path.exists('rubrica.txt') and os.path.exists('./DATI_RUBRICA'):
wr = input('\nVuoi vedere la rubrica? [Y|N] ')
if wr.upper() in ['YES', 'Y', 'SI', 'S']:
print( '\n', os.listdir('./DATI_RUBRICA'), '\n')
scelta = input("Scegli un numero esistente o premi Enter per metterre un link: ")
parserdarubrica()
else:
inputurl()
scraper()
parser()
stora_tutto()
driver.quit()
else:
inputurl()
scraper()
parser()
stora_tutto()
driver.quit()
stampa_liste()
stampa_info()
genera_prezzoN()
salvainrubrica()
# #PER DEBUG
# for x in range(len(nome)):
# print(prezzoN[x])
# print("\n" + "-" * 25 + "\n")
# print ("lista prezzo: ",len(prezzo))
# print ("lista prezzoN: ",len(prezzoN))
# print ("lista nome: ",len(nome))
# print("\n" + "-" * 25 + "\n")
# #PER DEBUG
# #stampa lunghezza liste
# print("lista nome: ",len(nome))
# print("lista desc: ",len(desc))
# print("lista npezzi: ",len(npezzi))
# print("lista prezzi: ",len(prezzo)) #sono stringhe"
# print("\n" + "-" * 25 + "\n")
# # Genera codice HTML
# html = "<html><body>"
# for x in range(len(nome)):
# html += "<h2>" + nome[x] + "</h2>"
# html += "<p>" + str(desc[x]) + "</p>"
# html += "<p>N. pezzi disponibili: " + str(npezzi[x]) + "</p>"
# html += "<p>Prezzo: €" + str(prezzoN[x]) + "</p>"
# html += "<button onclick=\"aggiungiProdotto('" + nome[x] + "', '" + str(prezzoN[x]) + "')\">+1</button>"
# html += "<br><br>"
# html += "<br><hr><h2>Prodotti aggiunti</h2>"
# html += "<div id=\"prodottiAggiunti\"></div>"
# html += "<script>"
# html += "function aggiungiProdotto(nome, prezzoN) {"
# html += " var prodotto = nome + ' (€' + Number(prezzo).toFixed(2) + ')';"
# html += " var box = document.getElementById('prodottiAggiunti');"
# html += " box.innerHTML += '<p>' + prodotto + '</p>';"
# html += "}"
# html += "</script>"
# html += "</body></html>"
# # Salvataggio su file
# with open("pagina.html", "w") as file:
# file.write(html)