Web Scraping con Python: una guida per principianti

Pubblicato: 2016-10-10

Nel mondo dei Big Data, i servizi di Web Scraping o Data Extraction sono i requisiti primari per Big Data Analytics. Recuperare dati dal Web è diventato quasi inevitabile per le aziende per rimanere in attività. La prossima domanda che viene fuori è come procedere con lo scraping web come principiante.

Python per raschiare il web

I dati possono essere estratti o raschiati da un'origine Web utilizzando diversi metodi. Siti web popolari come Google, Facebook o Twitter offrono API per visualizzare ed estrarre i dati disponibili in modo strutturato. Ciò impedisce l'uso di altri metodi che potrebbero non essere preferiti dal provider dell'API. Tuttavia, la richiesta di eseguire la scansione di un sito Web sorge quando le informazioni non sono prontamente offerte dal sito Web. Python, un linguaggio di programmazione open source, viene spesso utilizzato per il Web Scraping grazie al suo ecosistema semplice e ricco. Contiene una libreria chiamata "BeautifulSoup" che svolge questo compito. Diamo uno sguardo più approfondito al web scraping usando Python.

Configurazione di un ambiente Python:

Per eseguire lo scraping web utilizzando Python, dovrai prima installare Python Environment, che ti consente di eseguire codice scritto in linguaggio python. Le librerie eseguono lo scraping dei dati;

Beautiful Soup è una libreria Python comoda da usare. È uno dei migliori strumenti per estrarre informazioni da una pagina web. I professionisti possono eseguire la scansione delle informazioni dalle pagine Web sotto forma di tabelle, elenchi o paragrafi. Urllib2 è un'altra libreria che può essere utilizzata in combinazione con la libreria BeautifulSoup per recuperare le pagine web. È possibile aggiungere filtri per estrarre informazioni specifiche dalle pagine Web. Urllib2 è un modulo Python in grado di recuperare URL.

Per MAC OS X:

Per installare le librerie Python su MAC OSX, gli utenti devono aprire un terminale win e digitare i seguenti comandi, un comando alla volta:

sudoeasy_install pip

pip installa BeautifulSoup4

pip install lxml

Per gli utenti di Windows 7 e 8:

Gli utenti di Windows 7 e 8 devono assicurarsi che l'ambiente Python venga prima installato. Una volta installato l'ambiente, apri il prompt dei comandi e trova il modo per eseguire il root della directory C:/ e digita i seguenti comandi:

easy_install BeautifulSoup4

easy_installlxml

Una volta installate le librerie, è il momento di scrivere un codice di scraping dei dati.

Esecuzione di Python:

Lo scraping dei dati deve essere eseguito per un obiettivo distinto come eseguire la scansione dello stock corrente di un negozio al dettaglio. Innanzitutto, è necessario un browser Web per navigare nel sito Web che contiene questi dati. Dopo aver identificato la tabella, fare clic con il pulsante destro del mouse in un punto qualsiasi su di essa e quindi selezionare l'elemento ispeziona dall'elenco del menu a discesa. Ciò farà apparire una finestra nella parte inferiore o laterale dello schermo che mostra il codice HTML del sito web. Le classifiche vengono visualizzate in una tabella. Potrebbe essere necessario eseguire la scansione dei dati HTML fino a trovare la riga di codice che evidenzia la tabella nella pagina Web.

Python offre alcune altre alternative per lo scraping HTML oltre a BeautifulSoup. Loro includono:

  • Graffiato
  • Graffio
  • Meccanizzare

Il web scraping converte i dati non strutturati dal codice HTML in dati strutturati come i dati tabulari in un foglio di lavoro Excel. Il web scraping può essere eseguito in molti modi, dall'uso di Google Docs ai linguaggi di programmazione. Per le persone che non hanno alcuna conoscenza di programmazione o competenza tecnica, è possibile acquisire dati web utilizzando servizi di web scraping che forniscono dati pronti all'uso da siti web di propria preferenza.

Tag HTML:

Per eseguire il web scraping, gli utenti devono avere una solida conoscenza dei tag HTML. Potrebbe essere di grande aiuto sapere che i collegamenti HTML sono definiti utilizzando un tag di ancoraggio, ad esempio tag <a>, "<a href="https://...">Il collegamento deve essere qui </a>". Un elenco HTML comprende <ul> (non ordinato) e <ol> (ordinato). La voce dell'elenco inizia con <li>.

Le tabelle HTML sono definite con<Table>, la riga come <tr> e le colonne sono divise in dati come <td>;

  • <!DOCTYPE html> : un documento HTML inizia con una dichiarazione del tipo di documento
  • La parte principale del documento HTML in testo normale non formattato è definita dai tag <body> e </body>
  • Le intestazioni in HTML sono definite utilizzando i tag di intestazione da <h1> a <h5>
  • I paragrafi sono definiti con il tag <p> in HTML
  • Un intero documento HTML è contenuto tra <html> e </html>

Utilizzo di BeautifulSoup nella raschiatura:

Durante lo scraping di una pagina Web utilizzando BeautifulSoup, la preoccupazione principale è identificare l'obiettivo finale. Ad esempio, se desideri estrarre un elenco da una pagina Web, è necessario un approccio graduale:

  • Il primo e più importante passo è importare le librerie richieste:

#importa la libreria utilizzata per interrogare un sito web

import urllib2

#specifica l'URL wiki = “https://”

#Interroga il sito web e riporta l'html alla variabile 'pagina'

pagina = urllib2.urlopen(wiki)

#importa le funzioni Beautiful soup per analizzare i dati restituiti dal sito

da bs4 importa BeautifulSoup

# Analizza l'html nella variabile 'page' e salvalo nel formato Beautiful Soup

zuppa = BeautifulSoup(pagina)

  • Usa la funzione “prettifica” per visualizzare la struttura nidificata della pagina HTML
  • Lavorare con i tag di zuppa:

Soup<tag> viene utilizzato per restituire il contenuto tra l'apertura e la chiusura del tag, incluso il tag.

  1. In[30]:titolo.zuppa

Out[30]:<title>Elenco dei Presidenti in India fino al 2010 – Wikipedia, l'enciclopedia libera</title>

  1. soup.<tag>.string: restituisce la stringa all'interno del tag specificato
  2. In [38]:zuppa.titolo.stringa
  3. Out[38]:u 'Elenco dei presidenti in India e Brasile fino al 2010 in India – Wikipedia, l'enciclopedia libera'
  4. Trova tutti i link all'interno dei tag <a> della pagina: tagga un link usando il tag “<a>”. Quindi, vai con l'opzione soup.a e dovrebbe restituire i collegamenti disponibili nella pagina web. Facciamolo.
  5. In [40]:zuppa.a

Out[40]:<a id="top"></a>

  • Trova la tabella giusta:

Poiché si sta cercando una tabella per ottenere informazioni sui presidenti in India e Brasile fino al 2010, identificare prima la tabella giusta è importante. Ecco un comando per eseguire la scansione delle informazioni racchiuse in tutti i tag della tabella.

all_tables= soup.find_all('tabella')

Identificare la tabella giusta utilizzando l'attributo "classe" della tabella che deve filtrare la tabella giusta. Successivamente, controlla il nome della classe facendo clic con il pulsante destro del mouse sulla tabella richiesta della pagina Web come segue:

  1. Ispeziona elemento
  2. Copia il nome della classe o trova il nome della classe della tabella giusta dall'output dell'ultimo comando.

right_table=soup.find('table', class_='wikitable ordinabili plainrowheader')

tavola_destra

È così che possiamo identificare il tavolo giusto.

  • Estrarre le informazioni in DataFrame: è necessario scorrere ogni riga (tr) e quindi assegnare ogni elemento di tr (td) a una variabile e aggiungerlo a un elenco. Analizziamo la struttura HTML della tabella della tabella. (estrarre le informazioni per l'intestazione della tabella <th>)

Per accedere al valore di ogni elemento, è necessario utilizzare l'opzione "find(text=True)" con ogni elemento. Infine, ci sono i dati in dataframe.

Esistono vari altri modi per eseguire la scansione dei dati utilizzando "BeautifulSoup" che riducono gli sforzi manuali per raccogliere dati dalle pagine Web. Il codice scritto in BeautifulSoup è considerato più robusto delle espressioni regolari. Il metodo di scraping web di cui abbiamo discusso utilizza le librerie "BeautifulSoup" e "urllib2" in Python. Questa è stata una breve guida per principianti per iniziare a utilizzare Python per lo scraping web.

Resta sintonizzato per il nostro prossimo articolo su come lo scraping web influisce sulla crescita dei tuoi ricavi.

Stai pianificando di acquisire dati dal Web per la scienza dei dati? Siamo qui per aiutare. Facci sapere le tue esigenze.