Chiarimenti su come funziona un tracker prezzi

di il
11 risposte

Chiarimenti su come funziona un tracker prezzi

Buongiorno, sono nuovo nel forum, e prima di tutto volevo complimentarmi con gli sviluppatori e i moderatori, è un forum fatto veramente bene.
Comunque, se c'è qualcuno che può/sa rispondere, mi sto chiedendo da un pò di tempo come fa a funzionare un tracker dei prezzi tipo keepa oppure CamelCamel(per amazon) o più semplicemente un comparatore di prezzi (trovaprezzi o Facile.it). Questi programmi(quelli che ho citato precedentemente) hanno il consenso da parte dei E-commerce tracciati oppure si potrebbe tracciare qualsiasi tipo di e-commerce senza il loro consenso? Con che linguaggio si potrebbe costruire un programma per tracciare in uno o più siti i cambiamenti di prezzo per poi comprare l'oggetto nel momento più opportuno? Quanto è complesso secondo voi costruire un programma del genere? Qualcuno ha idea di come si potrebbe fare??
Grazie in anticipo!!

11 Risposte

  • Re: Chiarimenti su come funziona un tracker prezzi

    Ciao e benvenuto!.
    In genere i comparatori di prezzo hanno accordi con i singoli ecommerce e/o con intermediari di traffico sempre verso siti ecommerce.
    Fondamentalmente se un comparatore di prezzo invia un utente verso un sito ecommerce viene retribuito per click o per commissione in caso di acquisto.
    Tempo fa ne avevo messo in piedi uno quindi conosco bene la tematica sia lato commerciale che tecnico.

    Ti serve:
    - il sito web che espone i risultati e interagisce con l'utente permettendogli di fare ricerche, vedere lo storico, attivare alert e infine andare all'offerta di destinazione
    - un aggregatore dei cataloghi che è un' applicazione che in background (e costantemente con processi asincroni) scarica tutte le offerte presenti negli ecommerce censiti in modo da tenerle aggiornate. In base agli accordi puoi accedere a feed csv/xml, webservices o se ti va di sfiga ti tocca andare di web scraping (quindi devi creare bot appositi)
    - tutti i dati scaricati li devi archiviare, storicizzare (per via del tracker) e renderli interrogabili per ricerche fuzzy. (vedi Lucene, Elastic Search, ecc)
    - devi riuscire a riconoscere nelle offerte con titoli e descrizioni diverse, quali sono i prodotti di riferimento effettivi (ci sono diverse logiche da implementare per rendere il sistema attendibile)
    - qualche centinaio di €/mese per l'infrastruttura cloud

    Lato commerciale:
    - è abbastanza semplice instaurare le partnership, specie con gli intermediari di traffico (del resto la fame di traffico utenti è immane)
  • Re: Chiarimenti su come funziona un tracker prezzi

    Perfetto mi hai chiarito un pò le idee, io non voglio creare un comparatore di prezzi per e-commerce ma semplicemente un programma che mi permetta di monitorare per un buon periodo di tempo l'andamento dei prezzi in svariate pagine di un sito web.(non voglio metterlo in rete ma gestirlo autonomamente) (sapete se si possono prendere informazioni da un sito e se è legale anche senza il suo consenso?)
    Per farlo penso di aver bisogno di svolgere questi passaggi.(ditemi perfavore se ne salto o sbaglio qualcuno).
    1)creare un bot che mi permetta:
    -1andare su quel detterminato sito web
    -2andare sulle varie pagine del sito e scaricare il nome del articolo associato al prezzo e la data
    ( come mi consigliate di fare? la parte per me più complessa è l'automatizzare questo meccanismo cioè creare un bot che vada su tutte le pagine di quel sito web e attiva una volta dentro un codice che mi permetta di scaricare i valori che voglio (che fortunatamente sono caratterizzati dagli stessi DIV e classi),i siti che voglio tracciare sono costituiti da pagine web generate automaticamente quindi hanno una struttura comune e i DIV che mi interessano in ogni pagina vengono chiamati nello stesso modo, e attraverso una tecnica di HTMLparsing(posso usare javascript no?) posso estrarre ciò che voglio, c'è qualche libro fatto bene che spiega come creare dei bot o fare questo tipo di operazioni?
    2)attraverso SQL immagazzinare questi dati ed interrogarli attravero R per graficarli
    3) creare un interfaccia grafica per consultarli e avvisarmi quando i prezzi sono in calo
  • Re: Chiarimenti su come funziona un tracker prezzi

    Praticamente vuoi acquisire i dati da altri e-commerce presentandoti come un visitatore della pagina web invece che come client di interfacce applicative.
    La cosa può anche funzionare, d'altra parte i motori di ricerca operano proprio in questo modo quando esplorano il web e catalogano i siti; tuttavia si tratta di una soluzione poco consigliata per diversi motivi tra cui due fondamentali
    - le strutture delle pagine web possono cambiare improvvisamente e devi essere in gradi di adeguare il tuo software in tempi ragionevoli
    - i siti posso prevedere meccanismi di sicurezza (es. captcha se si ricevono troppe chiamate sospette da indirizzi sconosciuti) per evitare che i dati vengano diffusi in maniera non autorizzata
  • Re: Chiarimenti su come funziona un tracker prezzi

    Proprio cosi.
    in risposta alle tue osservazioni:
    -ho monitorato le pagine con web machine e nel tempo non sono cambiate, inoltre monitorando solo pochi (2-3 siti web) posso monitorare fisicamente i cambiamenti nella struttura delle pagine(magari metto un alert quando c'è qualche problema) e eventualmente adattare il codice
    -i siti non presentano captcha quindi offrono la possibilità di creare bot in grado di automatizzare i processi di un utente normale.
    Per l'estrazione del materiale non è complesso, il problema è che non ho mai creato bot e non so bene da dove incominciare, dovrebbe essere un bot piuttosto semplice cioè vai su quel sito-entra nella pagina-attiva codice ma non avendone mai fatto uno e non trovando manco dei libri che spieghino come fare mi sono arenato.
    Comunque grazie mille per le risposte!
  • Re: Chiarimenti su come funziona un tracker prezzi

    Hai quindi bisogno di un software che viene eseguito periodicamente e che deve fare queste azioni
    A) acquisire dati dalle pagine web in maniera strutturata
    B) inserire questi dati nel tuo sistema affinché tu possa elaborarli e monitorarli

    Per la parte B puoi fare come meglio credi
    Per la parte A ti consiglio uno strumento di browser automation come ad esempio Selenium WebDriver, si tratta di una libreria che ti consenti di manovrare un browser per farlo navigare automaticamente analizzando il contenuto delle pagine e simulando azioni dell'utente (riempimento campi di testo, click del mouse). In genere viene usato per automatizzare i test delle web application proprio per simulare la navigazione e verificare il corretto contenuto delle pagine web,
  • Re: Chiarimenti su come funziona un tracker prezzi

    Mi metterò al lavoro appena riesco a ritagliarmi un pò di tempo, vi saprò dire!
    grazie mille a tutti!
  • Re: Chiarimenti su come funziona un tracker prezzi

    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!
  • Re: Chiarimenti su come funziona un tracker prezzi

    Analizzatore di pagine statiche può andare bene quando le pagine sono preprocessate lato server (ASP, PHP, JSP) ma non funziona con i nuovi framework MVVM che costruiscono la pagina sul browser tramite JavaScript (es. Angular, VueJS, React).
    Per questo se devi fare analisi del documento HTML risultante hai necessariamente bisogno di un browser o qualcosa di simile che interpreta JavaScript e produce una pagina html proprio come farebbe il browser.
    In alcuni casi analizzando il traffico del browser potresti scoprire che vengono invocate in maniera asincrona (AJAX) delle API REST che forniscono i dati che ti servono in maniera strutturata, allora potresti invocare direttamente quelle e analizzarne il contenuto.
  • Re: Chiarimenti su come funziona un tracker prezzi

    shayolz ha scritto:




    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.

    grazie mille, ma non ho capito bene perchè è meglio non usare selenium? cosa mi offre utilizzare un analizzatore di pagine statiche? come funziona?

    op!n9 ha scritto:


    Analizzatore di pagine statiche può andare bene quando le pagine sono preprocessate lato server (ASP, PHP, JSP) ma non funziona con i nuovi framework MVVM che costruiscono la pagina sul browser tramite JavaScript (es. Angular, VueJS, React).
    Per questo se devi fare analisi del documento HTML risultante hai necessariamente bisogno di un browser o qualcosa di simile che interpreta JavaScript e produce una pagina html proprio come farebbe il browser.
    In alcuni casi analizzando il traffico del browser potresti scoprire che vengono invocate in maniera asincrona (AJAX) delle API REST che forniscono i dati che ti servono in maniera strutturata, allora potresti invocare direttamente quelle e analizzarne il contenuto.
    io per far questo volevo scrivere un programma in phyton che utilizza selenium/beautiful soap associato scrapy, secondo voi basta studiare questo per fare ciò di cui ho bisogno?
    grazie mille a tutti
  • Re: Chiarimenti su come funziona un tracker prezzi

    Python + Selenium dovrebbero essere sufficienti
  • Re: Chiarimenti su come funziona un tracker prezzi

    op!n9 ha scritto:


    Python + Selenium dovrebbero essere sufficienti
    Graziee, sono al lavoro, siccome lo faccio come passatempo ci vorrà un pò ma magari in un futuro vi aggiornerò sui miei progressi!
Devi accedere o registrarti per scrivere nel forum
11 risposte