diff --git a/scrapeje.py b/scrapeje.py deleted file mode 100644 index 77f5b78..0000000 --- a/scrapeje.py +++ /dev/null @@ -1,175 +0,0 @@ -import re -import os -from bs4 import BeautifulSoup -from selenium import webdriver -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC -from selenium.webdriver.common.by import By -#import requests -#import cloudscraper -#import json - - -#Inizializzo liste -nome=[] -desc=[] -npezzi=[] -prezzo=[] -prezzof=[] -scripto=[] - - -#INPUT -#prende l url della pagina justeat del ristorante in input -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-pizzeria-la-garganica-bologna/menu' - - -#INIZIALLIZZO PARSER -driver = webdriver.Chrome() -driver.get(restaurant_url) - -wait = WebDriverWait(driver, 10) -wait.until(EC.presence_of_element_located((By.CLASS_NAME, "c-menuItems-price--offline"))) - -page = driver.page_source - -with open('JEmenu.html', 'w') as f: - f.write(page) - -#apre e legge il file -with open('JEmenu.html', 'r') as f: - page = f.read() - -#PARSER -soup = BeautifulSoup(page, "html.parser") - - -#Stora nome ristorante -nrist = soup.title.text[8:-32] - -#Stora telefono del ristorante -pattern = re.compile(r'allergenPhoneNumber') -script_tags = soup.find_all('script', string=pattern) -pattern = re.compile(r'"allergenPhoneNumber":"(\d+)"') -tel = re.search(pattern, script_tags[0].next) -if tel: - tel = tel.group(1) - -#Stato ristorante -restaurant_is_open = menu = soup.find(attrs={"data-js-test":"order-status-wrapper"}).text -restaurant_is_open = restaurant_is_open.replace('\n', ' ') -regex = r" {4,}" -result = re.split(regex, restaurant_is_open) - -#indirizzo ristorante -restaurant_address = soup.find(attrs={"data-js-test":"header-restaurantAddress"}).text - -#cicla le schede prodotto -menu = soup.find(attrs={"data-test-id": "menu-item"}) -for menu in soup.find_all(attrs={"data-test-id": "menu-item"}): - att=menu - #riempie la lista "nome" - for att in menu.find(attrs={"data-test-id": "menu-item-name"}): - if att != type(None): - if att != " ": - nome.append(att.lstrip().splitlines()[0]) - break - else: - continue - - #riempie la lista "desc" - att=menu.find("p", class_="c-menuItems-description") - if att != None: - for att in menu.find("p", class_="c-menuItems-description"): - desc.append(att.lstrip().splitlines()[0]) - else: - desc.append(None) - - - #riempie la lista "prezzo" - #for att in menu.find(attrs={"data-js-test": "menu-item-price"}): - # prezzo.append(att.lstrip().splitlines()[0]) - - - #riempie la lista "npezzi" - att=menu.find_all(attrs={"data-test-id": "menu-item-description"}) - if att != None: - if menu.text.find("pezzo") > 0 or menu.text.find("pezzi") > 0: - npezzi.append(menu.text.splitlines()[7].lstrip()) - else: - npezzi.append(None) - continue - - -# #stampa liste -for x in range(len(nome)): - print("\n") - print(nome[x]) - print(desc[x]) - print(npezzi[x]) - # print(prezzo[x]) - regex = r"(?:da\s+)?([\d.]+)" - - # match = re.search(regex, prezzo[x]) - # if match: - # numero = match.group(1) - # print(numero) - # prezzof.append(int(numero)) - # else: - # prezzof.append(0) - # print(prezzof[x]) - - -#stampa lunghezza liste -print("\n") -print(nrist) -print(restaurant_address.strip()) -print("\n") -doppione = "" -for i in range(len(result)): - if re.search(r"[a-zA-Z]", result[i]): - if (result[i]) == doppione: - print("\n") - else: - print(result[i]) - elif re.search(r"\d", result[i]): - print(result[i], result[i+1]) - doppione = (result[i+1]) -print("telefono:",tel) -print("lista nome:",len(nome)) -print("lista desc:",len(desc)) -print("lista npezzi:",len(npezzi)) -#print("lista prezzi:",len(prezzo)) #sono stringhe ovvero ci sono anche prezzi come "da 1,00 €" (servirà formattarla in double per poter fare i conti) - - -# Generazione del codice HTML -html = "" -for x in range(len(nome)): - html += "

" + nome[x] + "

" -# html += "

" + desc[x] + "

" - html += "

N. pezzi disponibili: " + str(npezzi[x]) + "

" -# html += "

Prezzo: €" + str(prezzo[x]) + "

" -# html += "" - html += "

" - -html += "

Prodotti aggiunti

" -html += "
" -html += "" -html += "" - - -# Salvataggio su file -with open("pagina.html", "w") as file: - file.write(html) - -os.remove("JEmenu.html") \ No newline at end of file