Salta al contenuto principale
  1. Alcuni tutorial che ho scritto/

Come estrarre i testi di una pagina web con Python e Newspaper

·2 minuti·

A volte potremmo aver bisogno di estrapolare un articolo da una pagina web. Se avete provato la modalità articolo di Firefox e Safari, o se avete utilizzato software specifici come Pocket o Instapaper credo che possiate immaginare quello di cui vi voglio parlare.

Possiamo replicare le funzionalità di questi software in Python, grazie ad una fantastica libreria chiamata newspaper. Il suo utilizzo è piuttosto semplice, eccolo descritto in breve:

Installazione #

Per installare la libreria in modo che funzioni con Python 3.5 o superiori, avrò innanzitutto bisogno di installare alcune dipendenze: libxml2, libxslt, libtiff, libjpeg, webp e little-cms2.
Ad esempio su macOS utilizzo questi due comandi per installare tutto quello di cui ho bisogno:

brew install libxml2 libxslt
brew install libtiff libjpeg webp little-cms2

una volta installate queste dipendenze posso procedere ad installare newspaper utilizzando pip:

pip install newspaper3k

Newspaper è ora installato, ma non del tutto. Infatti, se desidero utilizzare le funzioni di IA per l’analisi dei testi degli articoli avrò anche bisogno di scaricare alcuni certificati e dizionari dal web che servono a Newspaper per effettuare l’analisi dei testi. Per installarle posso utilizzare questo script:

curl https://raw.githubusercontent.com/codelucas/newspaper/master/download_corpora.py | python

Una volta installato newspaper e le sue dipendenze, sono finalmente pronto ad utilizzarlo.

Utilizzo di newspaper #

Da Python importo la libreria con il comando

from newspaper import Article

Decido qual’è l’URL con l’articolo che voglio analizzare, ad esempio:

url = "http://www.ilfattoquotidiano.it/2017/08/07/google-tra-uomini-e-donne-ci-sono-differenze-biologiche-bufera-sulla-mail-dellingegnere-che-giustifica-le-disciminazioni/3780862/"

creo quindi un’istanza della classe Article, passandogli come parametro l’URL all’articolo che voglio importare:

articolo = Article(url)

Quindi chiedo all’istanza di scaricare l’articolo dal web e di analizzarlo:

articolo.download()
articolo.parse()

Se voglio anche utilizzare le funzioni di intelligenza artificiale che analizzano il contenuto dell’articolo e ne estraggono il riassunto (che si basano sulla libreria nltk installata assieme a newspaper), devo digitare il comando:

articolo.nlp()

Ora posso finalmente estrarre le informazioni che mi interessano:

titolo = articolo.title      # Il titolo dell'articolo
autori = articolo.authors    # Un array con gli autori dell'articolo
parole = articolo.keywords   # Un array con le parole chiave 
                             #     dell'articolo estratte dall'IA
                             #     ( prima devo richiamare articolo.nlp() )
testo = articolo.text        # Il testo estrapolato dall'articolo
sommario = articolo.summary  # Il sommario dell'articolo 
                             #     estratto dall'IA 
                             #     ( prima devo richiamare articolo.nlp() )

Tutto qui. Come potete facilmente immaginare, la difficoltà maggiore è soltanto quella di installare le dipendenze richieste. Per il resto, la libreria è veramente semplice ed intuitiva da utilizzare.