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 os
import shutil import shutil
#Inizializzo liste
nome=[]
desc=[]
npezzi=[]
prezzo=[]
prezzoN=[]
restaurant_url='' restaurant_url=''
def inputurl(): def inputurl():
@@ -25,50 +18,29 @@ def inputurl():
print ("\nesempio: https://www.justeat.it/restaurants-pizzeria-la-garganica-bologna/menu") print ("\nesempio: https://www.justeat.it/restaurants-pizzeria-la-garganica-bologna/menu")
restaurant_url = input('INSERISCI IL LINK DELLA PAGINA DEL RISTORANTE: ') restaurant_url = input('INSERISCI IL LINK DELLA PAGINA DEL RISTORANTE: ')
#PER DEBUG #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'): nome=[]
# if os.path.exists('./DATI_RUBRICA'): desc=[]
inputurl() npezzi=[]
# wr = input('\nVuoi vedere la rubrica? [Y|N] ') prezzo=[]
# if wr.upper() in ['YES', 'Y', 'SI', 'S']: prezzoN=[]
# print( '\n', os.listdir('./DATI_RUBRICA'), '\n') nrist=''
# scelta = input("Scegli un numero esistente o premi Enter per metterre un link: ") restaurant_address=''
# files = os.listdir('./DATI_RUBRICA/') tel=''
# for file in files: result=''
# if scelta in file: def stora_tutto():
# restaurant_url = (file) global nome
# else: global desc
# print ("numero inesistente") global npezzi
# inputurl() global prezzo
# else: global prezzoN
# inputurl() global soup
# else: global nrist
# inputurl() global restaurant_address
# else: global tel
# inputurl() global result
#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")
#Stora nome ristorante #Stora nome ristorante
nrist = soup.title.text[8:-32] 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) npezzi.append(None)
continue 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") print("\n")
for x in range(len(nome)): for x in range(len(nome)):
# print("\n") # print("\n")
@@ -144,7 +155,7 @@ for x in range(len(nome)):
print(npezzi[x]) print(npezzi[x])
print(prezzo[x]) print(prezzo[x])
#stampa info ristorante def stampa_info():
print("-" * (len(desc)) + "\n") print("-" * (len(desc)) + "\n")
print(nrist) print(nrist)
print(restaurant_address.strip()) print(restaurant_address.strip())
@@ -162,7 +173,7 @@ for i in range(len(result)):
doppione = (result[i+1]) doppione = (result[i+1])
print("\n" + "-" * (len(desc))+ "\n") print("\n" + "-" * (len(desc))+ "\n")
def genera_prezzoN():
#Genera la lista prezzoN[] che è un clone di "prezzo[] ma con i valori float anzichè string" #Genera la lista prezzoN[] che è un clone di "prezzo[] ma con i valori float anzichè string"
prezzoN = prezzo.copy() prezzoN = prezzo.copy()
for i in range(len(prezzo)): for i in range(len(prezzo)):
@@ -175,56 +186,8 @@ for i in range(len(prezzo)):
prezzoN[i] = 99999 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 maxn=0
def trova_nuovo_numero(): def trova_nuovo_numero():
global maxn global maxn
@@ -288,3 +251,89 @@ else:
#PULISCE #PULISCE
os.remove("JEmenu.html") os.remove("JEmenu.html")
os.remove("rubrica.txt") 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)