Web scraping: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Funzionalità collegamenti suggeriti: 1 collegamento inserito.
 
(33 versioni intermedie di 26 utenti non mostrate)
Riga 1:
Il '''web scraping''' (detto anche '''web harvesting''' o '''web data extraction''') è una [[Tecnologia|tecnica]] [[informatica]] di [[Screen scraping|estrazione di dati]] da un [[sito web]] per mezzo di [[Programma (informatica)|programmi]] [[software]]. Di solito, tali programmi simulano la navigazione umana nel [[World Wide Web]] utilizzando l'[[Hypertext Transfer Protocol]] (HTTP) o attraverso [[browser]], come [[Internet Explorer]] o [[Mozilla Firefox]].
{{T|inglese|informatica|dicembre 2012}}
 
Il web scraping è strettamenteStrettamente correlato all'[[indicizzazione (motori di ricerca)|indicizzazione]] dei siti [[Internet]];, tale tecnica è attuata mediante l'uso di [[Bot (informatica)|bot]] dalla maggior parte dei [[Motore di ricerca|motori di ricerca]]. D'altro canto, il web scraping si concentra di più sulla trasformazione di [[Dato|dati]] non strutturati presenti in Rete, di solito in formato [[HTML]], in [[Metadato|metadati]] che possono essere memorizzati e analizzati in locale in un [[database]]. Il web harvesting è altresì affine alla [[web automation]], che consiste nella simulazione della navigazione umana in Rete attraverso l'uso di software per [[computer]].
 
Esistono metodi utilizzati da alcuni siti web per prevenire il web scraping ''',''' come ad esempio rilevare e impedire ai [[Bot (informatica)|bot]] la visualizzazione delle loro pagine. Per aggirare il problema esistono sistemi di web scraping che si affidano a tecniche come [[Document Object Model|DOM]] parsing, [[Visione artificiale|Computer Vision]] e [[Elaborazione del linguaggio naturale|natural language processing]] per simulare la navigazione web umana. Grazie a queste tecniche è possibile raccogliere i contenuti delle pagine web per l'analisi offline. <ref name="webopedia">{{cita web|url=http://www.webopedia.com/TERM/W/Web_Scraping.html|titolo=Web Scraping (su webopedia.com)|lingua=en|accesso=17 dicembre 2012|urlarchivio=httphttps://www.webcitation.org/6CzH9u4z8?url=http://www.webopedia.com/TERM/W/Web_Scraping.html|dataarchivio=17 dicembre 2012|deadurlurlmorto=no}}</ref> Può essere usato per confrontare prezzi online, monitorare dati meteorologici, rilevare modifiche in un sito internet, nella [[ricerca scientifica]], per il [[mash-up (informatica)|web mashup]] e il [[data integration (informatica)|web data integration]].
Il '''web scraping''' (detto anche '''web harvesting''' o '''web data extraction''') è una [[Tecnologia|tecnica]] [[informatica]] di [[Screen scraping|estrazione di dati]] da un [[sito web]] per mezzo di [[Programma (informatica)|programmi]] [[software]]. Di solito, tali programmi simulano la navigazione umana nel [[World Wide Web]] utilizzando l'[[Hypertext Transfer Protocol]] (HTTP) o attraverso [[browser]], come [[Internet Explorer]] o [[Mozilla Firefox]].
 
Il web scraping è strettamente correlato all'[[indicizzazione]] dei siti [[Internet]]; tale tecnica è attuata mediante l'uso di [[bot]] dalla maggior parte dei [[Motore di ricerca|motori di ricerca]]. D'altro canto, il web scraping si concentra di più sulla trasformazione di [[Dato|dati]] non strutturati presenti in Rete, di solito in formato [[HTML]], in [[Metadato|metadati]] che possono essere memorizzati e analizzati in locale in un [[database]]. Il web harvesting è altresì affine alla [[web automation]], che consiste nella simulazione della navigazione umana in Rete attraverso l'uso di software per [[computer]].
 
Esistono metodi utilizzati da alcuni siti web per prevenire il web scraping ''',''' come ad esempio rilevare e impedire ai [[bot]] la visualizzazione delle loro pagine. Per aggirare il problema esistono sistemi di web scraping che si affidano a tecniche come [[Document Object Model|DOM]] parsing, [[Visione artificiale|Computer Vision]] e [[Elaborazione del linguaggio naturale|natural language processing]] per simulare la navigazione web umana. Grazie a queste tecniche è possibile raccogliere i contenuti delle pagine web per l'analisi offline. <ref name="webopedia">{{cita web|url=http://www.webopedia.com/TERM/W/Web_Scraping.html|titolo=Web Scraping (su webopedia.com)|lingua=en|accesso=17 dicembre 2012|urlarchivio=http://www.webcitation.org/6CzH9u4z8|dataarchivio=17 dicembre 2012|deadurl=no}}</ref>
 
Il web scraping si può usare per confrontare prezzi online, monitorare dati meteorologici, rilevare modifiche in un sito internet, nella [[ricerca scientifica]], per il [[mash-up (informatica)|web mashup]] e il [[data integration (informatica)|web data integration]].
 
==Tecniche==
Come già detto, ilIl web scraping è il processo tramite cui si estraggono o si collezionano dati nel [[World Wide Web]] e, una volta ottenuti questi dati, possono essere utilizzati per diversi scopi. Le tecniche che possiamo utilizzareutilizzabili dipenderanno dai mezzi e dalle risorse a nostra disposizione. Si parte da soluzioni dette "ad-hoc", che richiedono l'intervento dell'uomo per selezionare le informazioni utili, fino ad arrivare a sistemi completamente automatizzati, che attraverso il ''[[Machinemachine learning]]'' sgravano l'utente da alcuni compiti.
 
'''<big>Copia e incolla manuale</big>'''
 
'''<big>===Copia e incolla manuale</big>'''===
Nemmeno la miglior tecnica di web scraping può a volte rimpiazzare l'esame dell'occhio umano e il copia e incolla manuale. Per certi casi questa è l'unica soluzione possibile, visto che alcune pagine web impediscono la raccolta automatica di dati.
 
'''<big>===Web scraper</big>'''===
Esistono svariati software e tool che possonosono esserein utilizzati per personalizzare le impostazionigrado di webriconoscere scraping.automaticamente Essila cercanostruttura di riconoscere la struttura dellauna pagina web, per far sisenza che non sia necessario unalcun intervento dell'utenteumano per l'estrazione dei dati. Alcuni softwaredi perquesti il web scrapingsoftware sono in grado di estrarre informazioni direttamente dalle [[Application programming interface|API]].
 
===HTML parsing===
Esistono svariati software e tool che possono essere utilizzati per personalizzare le impostazioni di web scraping. Essi cercano di riconoscere la struttura della pagina web per far si che non sia necessario un intervento dell'utente per l'estrazione dei dati. Alcuni software per il web scraping sono in grado di estrarre informazioni direttamente dalle [[Application programming interface|API]].
Svariati siti web sono costituiti da pagine web generate automaticamente. La fonte da cui queste pagine ricavano informazioni sono per lo più grandi [[database]]. I dati di categorie simili tra loro vengono organizzate in pagine o [[template]] comuni, per essere reperite con maggior facilità. I [[wrapper]] sono software che permettono tramite la rilevazione dei template l'estrazione di dati dello stesso tipo prendono il nome di [[wrapper]].
 
'''<big>===Analisi con Visione computerizzata</big>'''===
'''<big>HTML</big>''' '''<big>parsing</big>'''
Utilizzando una combinazione di [[Machine''machine learning]]'' e [[computer vision]] si stanno sviluppando tecniche che permettono di analizzare ed estrarre dati da pagine web seguendo modelli simili. Esse quindi simuleranno il comportamento di un utente in carne ed ossa. In questa maniera il lavoro richiesto ai software di web scraping verrà ridotto e si otterranno informazioni più pertinenti.
 
===DOM parsing===
Svariati siti web sono costituiti da pagine web generate automaticamente. La fonte da cui queste pagine ricavano informazioni sono per lo più grandi [[database]]. I dati di categorie simili tra loro vengono organizzate in pagine o [[template]] comuni, per essere reperite con maggior facilità. I [[wrapper]] sono software che permettono tramite la rilevazione dei template l'estrazione di dati dello stesso tipo.
Per modificare o ispezionare una pagina web, vengono analizzati gli script lato client, che successivamente verranno organizzati in un [[Document Object Model|DOM tree]]. DOM è utilizzato principalmente per recuperare informazioni da documenti con una strutturazione non standard, cioè dove gli elementi vengono trovati in modo casuale
 
Infine (attraverso un browser web completo) sarà possibile interrogare e recuperare informazioni dall'albero.
'''<big>Analisi con Visione computerizzata</big>'''
 
'''<big>===Riconoscimento dell'annotazione semantica</big>''' ===
Utilizzando una combinazione di [[Machine learning]] e [[computer vision]] si stanno sviluppando tecniche che permettono di analizzare ed estrarre dati da pagine web seguendo modelli simili. Esse quindi simuleranno il comportamento di un utente in carne ed ossa. In questa maniera il lavoro richiesto ai software di web scraping verrà ridotto e si otterranno informazioni più pertinenti.
Nella maggior parte delle pagine web sono presenti annotazioni semantiche (o markup) e [[Metadato|metadati]] che possono essere facilmente reperiti e utilizzati per trovare frammenti di dati specifici. Questo potrebbe essere un semplice caso di DOM parsing se i metadati sono incorporati solamente nella pagina web. In caso contrario le annotazioni organizzate in diversi livelli vengono archiviate e gestite separatamente dalle pagine web, in modo tale che gli scraper possano recuperare le istruzioni e i dati da questo livello prima di eseguire lo scraping delle pagine.
 
<big>'''===Aggregazione verticale'''</big>===
<big>'''DOM parsing'''</big>
Ci sono diverse compagnie che hanno sviluppato piattaforme verticali specifiche per la raccolta. Essi creano e monitorano una moltitudine di [[Bot (informatica)|bot]] per specifiche verticali, senza "manhuman in the loop" (nessun coinvolgimento umano diretto), e senza lavoro relativo ad un sito specifico. La robustezza della piattaforma è misurata tramite la qualità delle informazioni che reperisce (numero di campi) e dalla sua scalabilità (quanto velocemente può scalare da centinaia a migliaia di siti). Questa scalabilità viene utilizzata nella maggior parte delle volte per indirizzare la lunga coda di siti che gli aggregatori comuni trovano complicati o troppo laboriosi per la raccolta dei contenuti.
 
<big>'''===Text pattern matching'''</big>===
Per modificare o ispezionare una pagina web, vengono analizzati gli script lato client, che successivamente verranno organizzati in un DOM tree. DOM è utilizzato principalmente per recuperare informazioni da documenti con una strutturazione non standard, cioè dove gli elementi vengono trovati in modo casuale. <ref>{{Cita pubblicazione|data=2017-08-23|titolo=Document Object Model|rivista=Wikipedia|lingua=it|accesso=2017-12-28|url=https://it.wikipedia.org/w/index.php?title=Document_Object_Model&oldid=90594870}}</ref> Incorporando un programma nel browser web è possibile recuperare le informazioni dall'albero.
Approccio semplice ma efficace per estrarre informazioni dalle pagine web. Può essere usato tramite il comando "grep" da riga di comando nei sistemi [[Unix|UNIX]] o attraverso le funzioni di expression-matching comuni dei [[Linguaggio di programmazione|linguaggi di programmazione]] (per esempio [[Perl]] o [[Python]]).
 
== L'economia del Webweb Scrapingscraping ==
'''<big>Riconoscimento dell'annotazione semantica</big>'''
Il web scraping è una tecnica che permette l'estrazione di informazioni dai siti web; spesso include la trasformazione di dati non strutturati di pagine web in [[Base di dati|database]] per l'analisi o il riutilizzo del contenuto. Il riutilizzo può essere sfruttato sul sito web dove abbiamo reperito le informazioni o per operazioni commerciali. Nella maggior parte dei casi, i [[Bot (informatica)|bot]], che costituiscono il 46% del traffico web, sono implementati da individui per eseguire il web scraping ad un ritmo molto più elevato rispetto a quello che potrebbero mai avere gli umani.
 
Nella maggior parte delle pagine web sono presenti annotazioni semantiche o markup e [[Metadato|metadati]] che possono essere facilmente reperiti e utilizzati per trovare frammenti di dati specifici. Questo potrebbe essere un semplice caso di DOM parsing se i metadati sono incorporati solamente nella pagina web. In caso contrario le annotazioni organizzate in diversi livelli vengono archiviate e gestite separatamente dalle pagine web, in modo tale che gli scraper possano recuperare le istruzioni e i dati da questo livello prima di eseguire lo scraping delle pagine.
 
<big>'''Aggregazione verticale'''</big>
 
Ci sono diverse compagnie che hanno sviluppato piattaforme verticali specifiche per la raccolta. Essi creano e monitorano una moltitudine di [[bot]] per specifiche verticali, senza "man in the loop" (nessun coinvolgimento umano diretto), e senza lavoro relativo ad un sito specifico. La robustezza della piattaforma è misurata tramite la qualità delle informazioni che reperisce (numero di campi) e dalla sua scalabilità (quanto velocemente può scalare da centinaia a migliaia di siti). Questa scalabilità viene utilizzata nella maggior parte delle volte per indirizzare la lunga coda di siti che gli aggregatori comuni trovano complicati o troppo laboriosi per la raccolta dei contenuti.
 
<big>'''Text pattern matching'''</big>
 
Approccio semplice ma efficace per estrarre informazioni dalle pagine web. Può essere usato tramite il comando "grep" da riga di comando nei sistemi [[Unix|UNIX]] o le funzioni di expression-matching comuni dei linguaggi di programmazione (per esempio [[Perl]] o [[Python]])
 
 
== L'economia del Web Scraping ==
Il web scraping è una tecnica che permette l'estrazione di informazioni dai siti web; spesso include la trasformazione di dati non strutturati di pagine web in [[Base di dati|database]] per l'analisi o il riutilizzo del contenuto. Il riutilizzo può essere sfruttato sul sito web dove abbiamo reperito le informazioni o per operazioni commerciali. Nella maggior parte dei casi, i [[bot]], che costituiscono il 46% del traffico web, sono implementati da individui per eseguire il web scraping ad un ritmo molto più elevato rispetto a quello che potrebbero mai avere gli umani.
 
Attraverso l'analisi delle principali piattaforme e servizi di web scraping, Distil Networks ha sottolineato come la democratizzazione del web scraping permetta agli utenti di rubare senza problemi informazioni sensibili sul web.
 
'''''"Se i tuoi contenuti possono essere visualizzati sul Web, possono essere 'raschiati '"'' (originale: ''"If your content can be viewed on the web, it can be scraped"'')<ref>{{Cita web|url=https://www.helpnetsecurity.com/2016/08/31/web-scraping-economy/|titolo=Ubiquity and danger: The web scraping economy|nome=Rami Essaid, CEO di Distil Networks}}</ref>
 
'''''“If your content can be viewed on the web, it can be scraped”''''' <ref>{{Cita web|url=https://www.helpnetsecurity.com/2016/08/31/web-scraping-economy/|titolo=Ubiquity and danger: The web scraping economy|nome=Rami Essaid, CEO di Distil Networks}}</ref>
 
Il 38% delle aziende che si dedicano al web scraping lo fa per ottenere contenuti. Poiché grazie alla mole di dati facilmente acquisibile è possibile effettuare una vasta gamma di operazioni come, il confronto prezzi, il monitoraggio dei dati meteorologici e svariate ricerche. I servizi di Web scraping costano solo 3,33 $ all'ora. In media un progetto di web scraping costa all'incirca 135 $. Il web scraper medio guadagna 58.000 $ all'anno, mentre lavorando in un'azienda medio-grande specializzata nel web scraping si può arrivare fino a 128.000 $ all'anno. <ref>{{Cita news|lingua=en-US|url=https://www.helpnetsecurity.com/2016/08/31/web-scraping-economy/|titolo=Ubiquity and danger: The web scraping economy - Help Net Security|pubblicazione=Help Net Security|data=2016-08-31|accesso=2017-12-28}}</ref>
 
 
Il 38% delle aziende che si dedicano al web scraping lo fa per ottenere contenuti. Poiché grazie alla mole di dati facilmente acquisibile è possibile effettuare una vasta gamma di operazioni come, il confronto prezzi, il monitoraggio dei dati meteorologici e svariate ricerche. I servizi di Web scraping costano solo 3,33 $ all'ora. In media un progetto di web scraping costa all'incirca 135 $. Il web scraper medio guadagna 58.000 {{m|58000|u=$}} all'anno, mentre lavorando in un'azienda medio-grande specializzata nel web scraping si può arrivare fino a 128.000 {{m|128000|u=$ }} all'anno. <ref>{{Cita news|lingua=en-US|url=https://www.helpnetsecurity.com/2016/08/31/web-scraping-economy/|titolo=Ubiquity and danger: The web scraping economy - Help Net Security|pubblicazione=Help Net Security|data=31 agosto 2016-08-31|accesso=28 dicembre 2017-12-28}}</ref>
 
== Metodi per prevenire il web scraping ==
Line 66 ⟶ 50:
* Monitorare l'eccesso di traffico può aiutare a bloccare alcuni bot.
* Utilizzare tool come [[CAPTCHA]] che permettono di verificare se è stata una persona reale ad accedere ad un sito web. Se questo non fosse vero si tratterebbe quindi di un bot e CAPTCHA lo bloccherebbe. A volte però i bot sono codificati in modo tale da bloccare CAPTCHA o utilizzare servizi di terze parti che sfruttano il lavoro umano per leggere e rispondere in tempo reale alle sfide di CAPTCHA.
* Utilizzare servizi anti-bot commerciali: le aziende offrono ai siti web servizi anti-bot e anti-scraping.<ref>{{Cita libro|titolo=Come si forma e funziona una mente|url=https://www.impossible.sg/our-services/social-media-marketing/|accesso=26 gennaio 2024|editore=impossible|pp=|ISBN=}}</ref>
* Individuare i bot tramite gli [[honeypot]] o attraverso un altro metodo di identificazione di indirizzi IP dei [[crawler]] automatici.
* Aggiungere piccole variazioni di HTML/CSS che andranno aper circondare dati importanti ed elementi di navigazione. Facendo ciò sarà necessario richiedere maggior coinvolgimento umano per la configurazione iniziale di un bot, questo perché essi si affidano alla consistenza del codice front-end del sito di destinazione. Se eseguito in maniera corretta si potrebbe rendere il sito web di destinazione troppo difficile da "raschiare" a causa della ridotta capacità di automatizzazione del processo di web scraping.
 
==Software==
==Strumenti principali==
Questi sono alcuni dei software o tool disponibili per personalizzare le soluzioni di web scraping:
*[[cURL]]
*cURL - tool da riga di comando o libreria per trasferimento e recupero di dati attraverso URL
*[[Firebug]]
*[[Firebug]] - estensione del browser che permette di eseguire debug, modifica e monitoraggio di una pagina web
*[[Greasemonkey]]
*[[Greasemonkey]] - estensione del browser che permette la modifica del sito web tramite alcuni script
*[[Httrack]]
*[[Httrack|HTTrack]] - web crawler open-source e gratis
*[[IMacros]]
*[[iMacros]] - estensione del browser web che aggiunge le funzioni di registrazione e riproduzione
*[[Node.js]]
*[[Node.js]] - ambiente open-source e multipiattaforma per l'esecuzione di codice JavaScript lato server
*[[Wget]]
*[[Wget]] - gestore di download che supporta HTTP, HTTPS e FTP
 
==Note==
Line 83 ⟶ 68:
 
==Bibliografia==
*{{Bibliografiacita libro|cid=Schrenk, 2007 | {{lingua=en}}|autore=Michael Schrenk, Michael, ''|titolo=Webbots, Spiders, and Screen Scrapers'', |città=San Francisco, |editore=No Starch Press, |anno=2007, pp. |p=306. |ISBN =9781593271206}}
*{{Bibliografiacita libro|cid=Turland, 2010 | {{lingua=en}} |autore=Turland, Matthew, ''|titolo=PHP-Architect's Guide to Web Scraping'', North York, Marco Tabini & Associates, |anno=2010, pp. |p=192. |ISBN =9780981034515}}
 
==Voci correlate==
Line 93 ⟶ 78:
*[[OpenSocial]]
*[[Spamdexing]]
 
==Altri progetti==
{{interprogetto}}
 
==Collegamenti esterni==