Created
April 28, 2024 09:41
-
-
Save F041/3edf69b287333020818f15b35108056f to your computer and use it in GitHub Desktop.
Ridurre il carico di lavoro aziendale tramite automazione che compra prodotti di link specifici tramite Amazon.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# idealmente questo codice va integrato con un cameriere dei dati (API) | |
# che chiama questo servizio quando vengono raggiunti numeri "critici" | |
# sulle scorte, presenti ad esempio su un foglio di calcolo di Google | |
# o/e ERP | |
library("RSelenium") | |
### Parte scorrevole ---- | |
# create driver object | |
driver<-rsDriver(browser="firefox", port=4550L, verbose=F, chromever = NULL) | |
#scelgo FireFox per un motivo preciso. Se non lo hai, installalo | |
# pulisci memoria, console, objects prima di riavviarlo | |
# Apri la pagina di Amazon, ovviamente business.amazon ha più senso | |
driver$client$navigate("https://www.amazon.it") | |
# qui inserirai gli acquisti periodici: ho inserito prodotti per la pizza | |
tutti_urls <- c("https://www.amazon.it/Farina-Caputo-Pizzeria-Kg-Cartone/dp/B07QCGS8JH/ref=sr_1_1?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=3B57LQMB2P209&dib=eyJ2IjoiMSJ9.wbge344vLMdlohBrasE6P5cgk0DxKFEdlZI221RPOpbuSpxfeg7dGptWwuWs45OnC2H-L6mebdBXIpll_YtSZp8WA7T-hgl6TZYJDqMrb74zxmI6WT-qkpG2oHG-np1P_vtLO_ya3I1vu5ixh1LOnjR3rxYgaDjUIRzXIr1vzuofYfJG8kIDpV_AYul6ZEn6RMyXHYL04yTknESQC2cLk8YOmFZyoxBUC8SVnrAvAvQbFcsjtp5wg0KU_pYXGyt4SyTzdsEhKbLMnpHG1ArDuQFhu4feKDKd_Xq0dPksp68.7fV-948QxQrzI9iQpHOl6MO4ceXpYwefuI1fLc86ZNQ&dib_tag=se&keywords=farina+caputo&qid=1714286670&sprefix=farina+caputo%2Caps%2C144&sr=8-1", | |
"https://www.amazon.it/MOZZARELLA-PIZZA-MONTANINA-5Kg-ABBASCIANO/dp/B0C4LHYSC1/ref=sr_1_10?crid=3HF5ELPOZ6IEA&dib=eyJ2IjoiMSJ9.ygT1FDeOXWue8yX7pOXfhsoPpyeyXA0M3mWx27Xuu0uyyBq616MVGfeV1wAoxVYYGX8s65Rd3rzHe6Ppg_UjafvjEPWR5OSM4Kl3FbGyNmn554Jf3-zH5mBdzdzeqMmNDLYk_SWYiBIJdNT7oFOOelSWST79OFRp7omrvkqqO5r44dAVMpv3T5pgV6e2nltSdP-n_QX2hAdFag8vrGbkco1bisyHMUyx0O8I6JXMu9C6xyDrbwgAPfiJf8nlK7PJVYzgL2VOUSPQmoZekQJBgGs9oZsb1mDM6zcQZ0dbREo.KqyR7iA-HqWodH2tXWptupGqyDkGcJ1wqSfZj1il_nQ&dib_tag=se&keywords=mozzarella+per+pizza&qid=1714286706&sprefix=mozzare%2Caps%2C115&sr=8-10", | |
#"https://www.amazon.it/Passata-pomodoro-vetro-Mutti-cartone/dp/B09JT1L18P/ref=sr_1_3?crid=215UVAXCMH621&dib=eyJ2IjoiMSJ9.XcufPe7nGvkWcVUSWjPNgEZpKl9NxuMA_qjs1rWcy2MP7l_C_HQVgTVicAebBJ4irRuDLg8PUBmd7oqHa-K_bQIBS3wgewJtYCORNgBCTi09zvnFTqrcDTqtXrrFaZJQbOrn9GZ-0S6JQga7TfUNo3c2pVuVeFx_f5L2y3hEoeD807m1ohfTMXaLZGOqXPKaeH-ll6X9nCLVaI2pViL7Djxe25deRW1zj-Er8uZ4KYqFqqLnCSgVXd8Xnas6guaAaz7OrSrYwbakERkiNjEatRs-4JsjBDyjFjizCdrmO6o.fISYDOKOZJrzmsVZUebDCulWZs8-5YtBxKWIVh6QV5w&dib_tag=se&keywords=pomodoro+mutti&qid=1714288485&sprefix=pomodoro+%2Caps%2C92&sr=8-3", | |
"https://www.amazon.it/Calabrese-Valle-Crati-Condimenti-Bottiglie/dp/B081M6Y24Q/ref=sr_1_20?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1BS9YFSTOBUQM&dib=eyJ2IjoiMSJ9.gR3VrzQm2azxCS9X4X_pEZsc3_FehjXEVzcVQB2-FtRjXhBfrjFYyv33pQV-s__ENG85pnDDQhjVW82oRLw1TW58LgFspBgJ9fG1bjB3gAcKqpaCfTk4r4luFxbbpCWMqM2iwNqnr8lrT8iy36zdqXqaPuCYXA2I8pxTORNp9J8ZCeUx7zjfuuNBtviIl6IluYjvcgCe5pVlan6-BqlR5QL2wcAgXoqn96oKi7SMFeZPg0huRjZb_aCL0pBVmUFOWNyrVNtTQZLDNBxVJWN8FWmwN0Rw-LyMOXMvzOj-8xI.EMTmlgRjOBTuy95M02VaIErMj4IBtWBHuABjsPO8kBQ&dib_tag=se&keywords=bottiglia+pomodoro&qid=1714288621&sprefix=bottiglia+pomodoro%2Caps%2C101&sr=8-20") | |
for(urls in tutti_urls) | |
{ | |
testo <- "" | |
for(url in urls) | |
{ | |
# Apri la pagina e aspetta che carica interamente | |
driver$client$navigate(url) | |
Sys.sleep(2) # 2 secondi, occhio | |
# Cerca tag div che dice se l'ingrediente, materia prima risulta disponibile nel magazzino | |
div <- try(driver$client$findElement(using = "id", value = "availability")) | |
#attenzione, il nome di quel "value" PUO' cambiare | |
# SE la pagina non ha quel tag, assumi assenza in magazzino. Ipotesi forte | |
if(class(div) == "try-error") | |
next | |
else | |
{ | |
# Ottieni testo da div tag | |
testo <- div$getElementText()[[1]] | |
break | |
} | |
} | |
if(testo == "Disponibilità immediata") | |
#attenzione, testo può cambiare. Es. "Disponibilità 2" o comunque un numero | |
{ | |
aggiungi_al_carrello <- driver$client$findElement(using = "id", value = "add-to-cart-button") | |
aggiungi_al_carrello$clickElement() | |
} | |
Sys.sleep(5) | |
} | |
### Parte delicata ---- | |
# Le credenziali non vanno MAI digitate all'interno di un codice | |
# Esistono varie soluzioni per conservare segreti: Keyring, creare file specifici, etc. | |
# Vai alla pagina del carrello | |
driver$client$navigate("https://www.amazon.it/gp/cart/view.html?ref_=nav_cart") | |
# Trova bottone "Procedi all'ordine" | |
prosegui_ordine <- driver$client$findElement(using = "name", value = "proceedToRetailCheckout") | |
# Clicca bottone precedente | |
prosegui_ordine$clickElement() | |
# Trova rettangolo inserimento nome utente | |
username_input <- driver$client$findElement(using = "id", value = "ap_email") | |
# Inserisci nome utente | |
username_input$sendKeysToElement(list("SEGRETO_UTENTE")) #OCCHIO | |
# Invia nome utente | |
username_input$submitElement() | |
# Trova rettangolo inserimento password | |
password_input <- driver$client$findElement(using = "id", value = "ap_password") | |
# Inserisci password | |
password_input$sendKeysToElement(list("SEGRETO_PASSWORD")) #OCCHIO | |
# Invia password | |
password_input$submitElement() | |
# Aspetta il caricamento della password | |
Sys.sleep(2) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment