Closed Raffy142 closed 2 months ago
Buongiorno @Raffy142, mi permetto di risponderti io, nonostante non sia collegato in alcun modo agli sviluppatori di questa Repository. Se stai utilizzando questa con le impostazioni predefinite date da loro, ovvero con questo come "deals_page", probabilmente il problema si verifica per via del recente aggiornamento del layout della pagina. Difatti, mentre precedentemente gli url dei prodotti potevano essere presi grazie a questa porzione di codice:
elements_urls = [e.get_attribute("href") for e in selenium_driver.find_elements(By.CSS_SELECTOR, "a[class*='DealCard']")]
ora purtroppo non è più possibile proprio per il cambio del layout. Ho verificato io stesso e l'unico modo per fare una cosa simile è utilizzare questo codice:
elements_urls = [e.get_attribute("href") for e in selenium_driver.find_elements(By.CSS_SELECTOR, "a[class*='a-color-base a-link-normal a-text-normal']")]
Anche in questo caso però sorge un problema dovuto al fatto che, sempre di recente, hanno implementato un caricamento dinamico dei prodotti; questo fa si che se provassi a eseguire il codice come suggerito sopra, ti restituirebbe al più 8 prodotti, e non tutti quelli della pagina. Pertanto, finchè non verrà trovata una soluzione, ti consiglio di sfruttare il codice che avevano suggerito per le pagine di ricerca classiche, indicato in una vecchia discussione avuta con un altro utente e presente a questo link. Spero comunque di esserti stato di aiuto!
Ciao @Raffy142 , sì, dev'esserci stata una modifica nelle pagine amazon circa un mese fa, infatti non funziona più nemmeno la nostra istanza.
Al momento personalmente non ho il tempo di occuparmi di rivedere il codice.
Grazie @GoukaMekkyaku per il possibile fix, sentiti libero di aprire una PR.
Ciao @Raffy142 e @GoukaMekkyaku. Anche se ancora non ho avuto tempo di considerare tutti i nuovi casi che si sono venuti a creare, ho aggiornato il codice per gestire il nuovo formato della pagina degli sconti e il caricamento dinamico. Ci sono ancora alcuni problemi, ma almeno ora è quasi totalmente utilizzabile
Vi ringrazio per le risposte esaustive, il problema è risolto grazie al vostro aiuto. Siete grandiosi.
Ciao, è da un po’ che sta dando questo tipo di errore, hai per caso qualche soluzione? Ti ringrazio in anticipo
Starting taking all urls Message: no such element: Unable to locate element: {"method":"partial link text","selector":"Sconto del 50%"} (Session info: chrome-headless-shell=125.0.6422.141); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception Stacktrace:
0 0x556ce142ae3a
1 0x556ce111445c
2 0x556ce11605b5
3 0x556ce1160671
4 0x556ce11a4f14
5 0x556ce11834dd
6 0x556ce11a22cc
7 0x556ce1183253
8 0x556ce11531c7
9 0x556ce1153b3e
10 0x556ce13f127b
11 0x556ce13f5327
12 0x556ce13dddae
13 0x556ce13f5df2
14 0x556ce13c274f
15 0x556ce141a128
16 0x556ce141a2fb
17 0x556ce1429f6c
18 0x7fb3c022dac3
Traceback (most recent call last): File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "/home/ubuntu/amazon-deals-telegram-bot/amazon-deals-telegram-bot/main.py", line 96, in
selected_product_info, already_sent_product_ids = get_random_product_info(deals_ids, already_sent_product_ids)
TypeError: cannot unpack non-iterable NoneType object