Guida per principianti al web scraping in Python (usando BeautifulSoup)

Contenuti

Panoramica

  • Impara il web scraping in Python usando la libreria BeautifulSoup
  • Il Web Scraping è una tecnica utile per convertire i dati non strutturati sul Web in dati strutturati
  • BeautifulSoup è un'efficiente libreria disponibile in Python per eseguire scratch web diversi da urllib
  • È necessaria una conoscenza di base dei tag HTML e HTML per eseguire il web scraping in Python

introduzione

La necessità e l'importanza di estrarre dati dal web sta diventando sempre più forte e chiara. Ogni poche settimane, Sono in una situazione in cui abbiamo bisogno di estrarre dati dal web per costruire un modello di apprendimento automatico.

Ad esempio, la scorsa settimana stavamo pensando di creare un indice di prurito e sentimento su vari corsi di data science disponibile su internet. Ciò non richiederebbe solo la ricerca di nuovi corsi!, ma cerca anche sul web le tue recensioni e poi riassumile in alcune metriche!

Questo è uno dei problemi / prodotti la cui efficacia dipende maggiormente dal web scraping e dall'estrazione di informazioni (raccolta dati) quale delle tecniche utilizzate per riassumere i dati.

Nota: Abbiamo anche creato un corso gratuito per questo articolo: Introduzione al web scraping con Python. Questo formato strutturato ti aiuterà a imparare meglio.

Modi per estrarre informazioni dal web

Esistono diversi modi per estrarre informazioni dal web. Uso di APIè probabilmente il modo migliore per estrarre dati da un sito web. Quasi tutti i grandi siti web come Twitter, Facebook, Google, Twitter, StackOverflow fornisce API per accedere ai tuoi dati in modo più strutturato. Se riesci a ottenere ciò di cui hai bisogno tramite un'API, è quasi sempre l'approccio preferito rispetto al web scraping. Questo perché se accedi ai dati strutturati dal provider, Perché vorresti creare un motore per estrarre le stesse informazioni??

purtroppo, non tutti i siti web forniscono un'API. Alcuni lo fanno perché non vogliono che i lettori estraggano molte informazioni in modo strutturato, mentre altri non forniscono API a causa della mancanza di conoscenze tecniche. Cosa fai in questi casi? Bene, dobbiamo raschiare il sito Web per ottenere le informazioni.

Potrebbero esserci altri modi come i feed RSS, ma il suo uso è limitato e, così, Non li includerò nella discussione qui.

admin-ajax-6170451

Cos'è il web scraping??

Il web scraping è una tecnica software per l'estrazione di informazioni dai siti Web. Questa tecnica è principalmente focalizzata sulla trasformazione di dati non strutturati (formato HTML) sul web in dati strutturati (database o foglio di calcolo).

Puoi eseguire il web scraping in vari modi, compreso l'uso di Google Docs in quasi tutti i linguaggi di programmazione. Mi rivolgerei a Python per la sua semplicità e il suo ricco ecosistema. Ha una biblioteca conosciuta come "BeautifulSoup"’ cosa aiuta in questo compito. In questo articolo, ti mostrerò il modo più semplice per imparare il web scraping usando la programmazione Python.

Per quelli di voi che hanno bisogno di un modo non di programmazione per estrarre informazioni dalle pagine web, possono anche guardare import.io . Fornisce un'interfaccia guidata dalla GUI per eseguire tutte le operazioni di scraping web di base. Gli hacker possono continuare a leggere questo articolo!!

Librerie necessarie per il web scraping

Come sappiamo, Chiodo è un linguaggio di programmazione open source. Puoi trovare molte librerie per eseguire una funzione. Perciò, devi trovare la migliore libreria da usare. preferisco Bella zuppa (Libreria Python), in quanto è facile ed intuitivo lavorarci sopra. Precisamente, userò due moduli Python per raschiare i dati:

  • Urllib2: È un modulo Python che può essere utilizzato per cercare URL. Definisci funzioni e classi per aiutare con le azioni URL (autenticazione di base e sommaria, reindirizzamenti, biscotti, eccetera.). Per ulteriori dettagli, vedere il pagina della documentazione. Nota: urllib2 è il nome della libreria inclusa in Python 2. Anziché, puoi usare la libreria urllib.request inclusa con python 3. La libreria urllib.request funziona nello stesso modo in cui funziona urllib.request in Python 2. Perchè è già incluso non c'è bisogno di installare.
  • bellazuppa: È uno strumento incredibile per estrarre informazioni da una pagina web. Puoi usarlo per estrarre tabelle, liste, paragrafo e puoi anche mettere filtri per estrarre informazioni dalle pagine web. In questo articolo, useremo l'ultima versione di BeautifulSoup 4. Puoi fare riferimento alle istruzioni di installazione nel tuo pagina della documentazione.

BeautifulSoup non cerca nel sito per noi. Perché, Uso urllib2 in combinazione con la libreria BeautifulSoup.

Chiodo ha molte altre opzioni per lo scraping HTML oltre a BeatifulSoup. Eccone altri:

Concetti basilari: familiarizzare con l'HTML (etichette)

Mentre facciamo il robusto web, ci occupiamo dei tag html. Perciò, dobbiamo capirli bene. Se conosci già le basi dell'HTML, puoi saltare questa sezione. Di seguito è riportata la sintassi di base dell'HTML:html-7707012Questa sintassi ha diversi tag che sono dettagliati di seguito:

  1. : I documenti HTML devono iniziare con una dichiarazione di tipo
  2. Il documento HTML è contenuto tra e
  3. La parte visibile del documento HTML è tra e
  4. Le intestazioni HTML sono definite con il

    per

    etichette

  5. I paragrafi HTML sono definiti con il

    etichetta

Altri tag HTML utili sono:

  1. I collegamenti HTML sono definiti con il etichetta, “<un href =“Http://www.test.com”>Questo è un link per test.com</un> "
  2. Le tabelle HTML sono definite con, fila come
    e le righe sono suddivise in dati come

    è dentro l'etichetta

    tabella-9656416
  3. L'elenco HTML inizia con
  4. )
    struttura-6561345Al di sopra, potresti notare che il secondo elemento di

    , no

    , quindi dobbiamo occuparci di questo. Ora, per accedere al valore di ogni elemento, useremo l'opzione “Cercare (testo = vero)” con ogni elemento. Vediamo il codice:
    #Genera liste
    A=[]
    B=[]
    C=[]
    D=[]
    E=[]
    F=[]
    G=[]
    per riga in right_table.findAll("vero"):
        celle = riga.trovaTutto('td')
        stati=riga.trovaTutto('ns') #Per memorizzare i dati della seconda colonna
        se len(cellule)==6: #Estrai solo il corpo della tabella senza intestazione
            A.append(cellule[0].trova(testo=Vero))
            B.append(stati[0].trova(testo=Vero))
            C.append(cellule[1].trova(testo=Vero))
            D.append(cellule[2].trova(testo=Vero))
            E.append(cellule[3].trova(testo=Vero))
            F.append(cellule[4].trova(testo=Vero))
            G.append(cellule[5].trova(testo=Vero))
    #importa panda per convertire l'elenco in frame di dati
    importa panda come pd
    df=pd.DataFrame(UN,colonne=['Numero'])
    df['Stato/UT']=B
    df['Capitale_Ammin']=C
    df['Legislative_Capital']=D
    df["Capitale_giudiziario"]= E
    df['Anno_Capitale']=F
    df['Ex_Capitale']=G
    df
    

    Finalmente, abbiamo dati nel frame di dati:
    uscita-6122649
    Nello stesso modo, puoi eseguire altri tipi di web scraping usando “Bella zuppa“. Ciò ridurrà i tuoi sforzi manuali per raccogliere i dati della pagina web.. Puoi anche guardare gli altri attributi come .parent, .Contenuti, .discendenti y .next_sibling, .prev_sibling e vari attributi per navigare usando il nome del tag. Questi ti aiuteranno a rimuovere le pagine web in modo efficace.

    Ma, Perché non posso usare l'espressione regolare??

    Ora, se conosci le espressioni regolari, potresti pensare di poter scrivere codice usando regex che può fare lo stesso per te. Avevo sicuramente questa domanda. Nella mia esperienza con BeautifulSoup e regex per fare lo stesso, ho scoperto:

    • Il codice scritto in BeautifulSoup è solitamente più robusto del codice scritto con espressioni regolari. I codici scritti con espressioni regolari dovrebbero essere modificati con qualsiasi modifica alle pagine. Anche BeautifulSoup ne ha bisogno in alcuni casi, è solo che BeautifulSoup è relativamente migliore.
    • Le espressioni regolari sono molto più veloci di BeautifulSoup, generalmente di un fattore 100 per dare lo stesso risultato.

    Perciò, si riduce alla velocità rispetto alla robustezza del codice e non esiste un vincitore universale qui. Se le informazioni che stai cercando possono essere estratte con semplici dichiarazioni regex, devi andare avanti e usarli. Per quasi tutti i lavori complessi, In genere consiglio BeautifulSoup più delle espressioni regolari.

    Nota finale

    In questo articolo, analizziamo i metodi di web scraping che usano “bellazuppa” e “urllib2” e Python. Abbiamo anche esaminato le basi dell'HTML ed eseguito il web scraping passo dopo passo mentre risolvevamo una sfida.. Ti consiglio di esercitarti e di usarlo per raccogliere dati dalle pagine web.

    Trovi utile questo articolo? Condividi le tue opinioni / pensieri nella sezione commenti qui sotto.

    Nota: Abbiamo anche creato un corso gratuito per questo articolo: Introduzione al web scraping con Python. Questo formato strutturato ti aiuterà a imparare meglio.

    Se ti piace quello che hai appena letto e vuoi continuare a imparare l'analisi, iscriviti alle nostre email, Seguici su Twitter o come il nostro pagina Facebook.

    Iscriviti alla nostra Newsletter

    Non ti invieremo posta SPAM. Lo odiamo quanto te.