Come estrarre il testo principale da qualsiasi pagina web
Estrarre il testo dalle pagine web è più complicato di quanto sembri. Come minimo bisogna fare due cose
- Prendere il sorgente HTML di una pagina web. Questo può essere fatto con qualsiasi funzione nativa come file_get_contents() inclusa nei linguaggi di programmazione avanzati. Questa è l'opzione più semplice, ma ti consiglio di controllare le librerie come cURL, che ti daranno più opzioni e ti spiegherò perché più avanti.
- Estrarre il testo da HTML. Ti consiglio di guardare il Document Object Model, che ti permette di estrarre il testo in modo strutturato. L'HTML può essere considerato un testo semi-strutturato, rispetto al file di testo semplice. Con DOM puoi ottenere più informazioni sulla struttura che ti aiuterebbero molto nell'elaborazione del testo.
Poi se hai bisogno di gestire più pagine web, dicendo tutte le pagine web da un dato sito web, avrai bisogno di un web crawler, che estrae gli hyperlink da una pagina web e poi processa questi link ricorsivamente.
Leggere le pagine web è spesso lento. Quindi, se avete bisogno di elaborare migliaia di pagine web, potreste dover elaborare le pagine web in più thread. In tal caso, funzioni come curl_multi() aiutano molto. Possono accelerare la velocità di dieci o più cartelle.
Dopo aver lavorato con le pagine web per un po', vi accorgerete che ciò che il vostro programma ottiene è spesso diverso da ciò che si vede in un browser. Ci sono due ragioni principali
- Molti siti web forniscono contenuti personalizzati in base alle lingue del vostro browser/OS e ai vostri indirizzi IP. A volte vuoi solo pagine in inglese ma ti danno quelle in spagnolo.
- Molti siti web usano JavaScript/AJAX per caricare parte o addirittura tutto il loro contenuto testuale.
Per il primo problema, puoi impostare le tue cURL per aggirare il problema, almeno in parte. Se questo non funziona, dovete identificare la lingua della pagina e schermare le lingue indesiderate con il vostro programma.
Per i contenuti caricati in JavaScript, avete bisogno di un programma simile a un browser che esegua i codici JS durante l'elaborazione dell'HTML. Un esempio di tale programma è Chrome senza testa. Lo svantaggio dei browser senza testa è che sono molto lenti in confronto a cURL.
Infine, quando si procede alla fase di produzione, si scopre che il programma non ottiene nulla da una grande parte dei siti web. Looking into these websites, you will find the following problems.
- Many websites are too slow - You have to balance the speed and availability by choosing the right timeout.
- Many websites are too fragile - They crashes once you read two or three pages from them in parallelism. An “intelligent” crawler is needed to prevent from breaking them.
To summarize, to extract text from web pages, the following tools are all that you need
- cURL
- DOM
To develop a program that can extract text from web pages at a large scale, in an efficient and reliable manner, there are some additional jobs to do.
- Crawling
- Handling languages
- Handling JS
- Throttling
I myself gained the above experiences when developing a self-learning AI application, acobot.ai, which learns from a given domain and interacts with users by itself.
You may check out a demo of self-learning AI and see how it extracts text from web pages.
Articoli simili
- C'è un'app che permette di scattare una foto di una pagina o qualsiasi altra cosa con delle parole sopra, e la converte in testo?
- Come si chiama un metodo principale in un altro metodo principale di classe in Java?
- Se il testo inizia come iMessage e cambia in verde e dice inviato come messaggio di testo sei bloccato e il testo è stato inviato?
- Come estrarre il mio backup della chat di WhatsApp in testo semplice nel mio telefono Android che è in formato crypt.db