Avevo fatto un sistema molto simile a quello che avevi in mente, e l'ho fatto sull'e-commerce più famoso esistente. Tutto il sistema sta girando ormai da quasi un anno, e da quando l'ho messo su non l'ho più toccato. Quindi si può dire che analizzare l'html delle pagine funzioni.
In circa un anno sono stati aggiunti all'incirca 400.000 prodotti, con un aggiunta giornaliera media di circa 1.200 nuovi prodotti. Ho notato che ci sono giorni dove ne vengono trovati molti di più, quindi è possibile che l'e-commerce aggiunga nuovi prodotti in giorni specifici della settimana.
Quello che ho fatto io è navigare nella pagina del sito e fare ricerche generiche. Per esempio "televisione", "computer", "smartphone" etc e analizzare i risultati delle prime x pagine. In caso il prodotto sia già nel db aggiorno il prezzo, se invece è un prodotto nuovo lo inserisco come nuovo prodotto. Quindi da qui è anche facile tenere uno storico del prezzo per lo stesso prodotto. (in genere se analizzi l'html o l'url, lo stesso prodotto ha un codice univoco)
L'architettura è abbastanza semplice, anche perchè il progetto era un test per progetti pilota.
Per farla breve il sistema ha 3 progetti:
1 - Web app in .NET Core che semplicemente interroga il database ed espone i prodotti in base a dei filtri.
2 - Worker Service in .NET Core (background task), un servizio che fa scraping ogni tot di tempo su delle pagine che decido io.
3 - Worker Service .NET Core (background task), un secondo servizio che cerca proxy e li valida.
Prendi il caso che ogni ora il servizio va a verificare 10 pagine e controllare che prodotti trova al suo interno.
Stiamo parlando comunque di un e-commerce non proprio piccolo e che in caso di affiliazione di da anche delle API (a pagamento) per poter tirare fuori i prezzi dei prodotti. Quindi il problema principale è stato riuscire a superare l'antibot.
I problemi principali sono 2:
1. Quante richieste fai in un certo intervallo di tempo.
2. Cambiare ip
Bisogna trovare dei compromessi e creare un bot che non spammi troppo e che cambi anche il proprio ip spesso. Ed è qui che entra in gioco il secondo servizio.
Il suo compito principale è andare ad analizzare liste di proxy gratis (se fai una ricerca su google trovi vari siti), e per ogni ip provare a fare una chiamata web semplice all'e-commerce e vedere se l'ip è già stato flagato come bot o se può navigare sul sito. Quindi sul database mi salvo tutti gli ip validi e tutti gli ip bloccati, che comunque andranno ritestati nel tempo. Il servizio è molto più complesso di come l'ho descritto, ma è solo per farti capire che per fare scraping sull'e-commerce avrai bisogno di più proxy.
Avendo vari ip validi, il servizio 1 che fa scraping lancerà in parallelo n. Task che fanno scraping delle pagine web in maniera completamente asincrona ed estrapolano i risultati.
Per fare scraping non ti conviene utilizzare Selenium, che è più utilizzato per aprire browser e comportarsi come un utente "reale", ma al caso tuo servirà più un analizzatore di pagine statiche html. Io ho utilizzato html agility pack per .NET, ma ne esistono vari.
Ti permette, da una richiesta Web ,di analizzare facilmente la pagina HTML utilizzando i tag,classi,id per estrapolare i vari dati.
Spero di averti dato una mano, buon lavoro!