Raschia un sito Web con questo bellissimo tutorial su Python per zuppa

Beautiful Soup è una libreria Python open source. Utilizza i parser di navigazione per raschiare il contenuto dei file XML e HTML. Hai bisogno di dati per diversi scopi analitici. Tuttavia, se non conosci Python e il web scraping, vale la pena provare la libreria Beautiful Soup di Python per un progetto di web scraping.

Con la libreria Beautiful Soup open source di Python, puoi ottenere dati raschiando qualsiasi parte o elemento di una pagina web con il massimo controllo sul processo. In questo articolo, esaminiamo come puoi utilizzare Beautiful Soup per raschiare un sito web.

Come installare una bella zuppa e iniziare con essa

Prima di procedere, in questo articolo tutorial su Beautiful Soup, useremo Python 3 e beautifulsoup4 , l'ultima versione di Beautiful Soup. Assicurati di creare un ambiente virtuale Python per isolare il tuo progetto e i suoi pacchetti da quelli sul tuo computer locale.

Per iniziare, devi installare la libreria Beautiful Soup nel tuo ambiente virtuale. Beautiful Soup è disponibile come pacchetto PyPi per tutti i sistemi operativi, quindi puoi installarlo con il comando pip install beautifulsoup4 tramite il terminale.

Tuttavia, se sei su Debian o Linux, il comando sopra funziona ancora, ma puoi installarlo con il gestore di pacchetti eseguendo apt-get install python3-bs4 .

Beautiful Soup non gratta direttamente gli URL. Funziona solo con file HTML o XML già pronti. Ciò significa che non puoi passare un URL direttamente al suo interno. Per risolvere questo problema, è necessario ottenere l'URL del sito Web di destinazione con la libreria delle richieste di Python prima di inviarlo a Beautiful Soup.

Per rendere disponibile quella libreria per il tuo scraper, esegui il comando pip install request tramite il terminale.

Per utilizzare la libreria parser XML, eseguire pip install lxml per installarlo.

Ispeziona la pagina web che desideri raschiare

Prima di raschiare qualsiasi sito Web con cui non hai familiarità, una best practice è ispezionarne gli elementi. Puoi farlo passando il tuo browser alla modalità sviluppatore. È abbastanza facile utilizzare Chrome DevTools se utilizzi Google Chrome.

Tuttavia, è necessario ispezionare una pagina Web per saperne di più sui suoi tag HTML, attributi, classi e ID. In questo modo vengono esposti gli elementi principali di una pagina Web e i suoi tipi di contenuto.

Ti aiuta anche a sviluppare le migliori strategie che puoi utilizzare per ottenere i dati esatti che desideri da un sito Web e come ottenerli.

Come raschiare i dati di un sito Web con una bella zuppa

Ora che hai tutto pronto, apri un editor di codice preferito e crea un nuovo file Python, assegnandogli un nome scelto. Tuttavia, puoi anche utilizzare IDE basati sul Web come Jupyter Notebook se non hai familiarità con l'esecuzione di Python tramite la riga di comando.

Quindi, importa le librerie necessarie:

from bs4 import BeautifulSoup import requests

Prima di tutto, vediamo come funziona la libreria delle richieste:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') print(website)

Quando esegui il codice sopra, restituisce uno stato 200, che indica che la tua richiesta è andata a buon fine. Altrimenti, ottieni uno stato 400 o altri stati di errore che indicano una richiesta GET non riuscita.

Ricorda di sostituire sempre l'URL del sito web tra parentesi con l'URL di destinazione.

Una volta che il sito web con il get richiesta, quindi si passa trasversalmente alla bella zuppa, che ora può leggere il contenuto come file XML HTML o XML utilizzando la sua built-in o HTML parser, a seconda del formato scelto.

Dai un'occhiata a questo prossimo frammento di codice per vedere come farlo con il parser HTML:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') soup = BeautifulSoup(website.content, 'html.parser') print(soup)

Il codice sopra restituisce l'intero DOM di una pagina web con il suo contenuto.

Puoi anche ottenere una versione più allineata del DOM utilizzando il metodo prettify . Puoi provare questo per vedere il suo output:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.prettify())

Puoi anche ottenere il contenuto puro di una pagina web senza caricare il suo elemento con il metodo .text :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.text)

Come raschiare il contenuto di una pagina Web in base al nome del tag

Puoi anche raschiare il contenuto in un particolare tag con Beautiful Soup. Per fare ciò, è necessario includere il nome del tag di destinazione nella richiesta del raschietto Beautiful Soup.

Ad esempio, vediamo come ottenere il contenuto nei tag h2 di una pagina web.

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.h2)

Nello snippet di codice sopra, soup.h2 restituisce il primo elemento h2 della pagina web e ignora il resto. Per caricare tutti gli elementi h2 , puoi usare la funzione integrata find_all e il ciclo for di Python:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups)

Quel blocco di codice restituisce tutti gli elementi h2 e il loro contenuto. Tuttavia, puoi ottenere il contenuto senza caricare il tag utilizzando il metodo .string :

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups.string)

Puoi utilizzare questo metodo per qualsiasi tag HTML. Tutto quello che devi fare è sostituire il tag h2 con quello che ti piace.

Tuttavia, puoi anche raschiare più tag passando un elenco di tag nel metodo find_all . Ad esempio, il blocco di codice seguente raschia il contenuto di a , h2 e title tag:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') tags = soup.find_all(['a', 'h2', 'title']) for soups in tags: print(soups.string)

Come raschiare una pagina Web utilizzando l'ID e il nome della classe

Dopo aver ispezionato un sito Web con DevTools, ti consente di saperne di più sugli attributi id e class che contengono ciascun elemento nel suo DOM. Una volta che hai quell'informazione, puoi raschiare quella pagina web usando questo metodo. È utile quando il contenuto di un componente di destinazione esce dal database.

È possibile utilizzare il metodo find per gli scraper id e classe. A differenza del metodo find_all che restituisce un oggetto iterabile, il metodo find funziona su un singolo target non iterabile, che in questo caso è l' id . Quindi, non è necessario utilizzare il ciclo for con esso.

Diamo un'occhiata a un esempio di come puoi raschiare il contenuto di una pagina qui sotto usando l'id:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') id = soup.find(id = 'enter the target id here') print(id.text)

Per fare ciò per un nome di classe, sostituisci l' id con class . Tuttavia, la scrittura di una classe provoca direttamente confusione nella sintassi poiché Python la vede come una parola chiave. Per ignorare quell'errore , devi scrivere un carattere di sottolineatura davanti a class in questo modo: class_ .

In sostanza, la riga contenente l'id diventa:

my_classes = soup.find(class_ = 'enter the target class name here') print(my_classes.text)

Tuttavia, puoi anche raschiare una pagina web chiamando un particolare nome di tag con il suo ID o classe corrispondente:

data = soup.find_all('div', class_ = 'enter the target class name here') print(data)

Come fare un raschietto riutilizzabile con una bella zuppa

Puoi creare una classe e mettere insieme tutto il codice precedente in una funzione in quella classe per creare uno scraper riutilizzabile che ottenga il contenuto di alcuni tag e i loro ID. Possiamo farlo creando una funzione che accetti cinque argomenti: un URL, due nomi di tag e i loro ID o classi corrispondenti.

Supponiamo che tu voglia racimolare il prezzo delle camicie da un sito di e-commerce. La classe di raschietto di esempio di seguito estrae i tag del prezzo e della maglietta con i loro ID o classi corrispondenti e quindi li restituisce come frame di dati Pandas con "Price" e Shirt_name come nomi di colonna.

Assicurati di installare pip i panda tramite il terminale se non lo hai già fatto.

import pandas as pd class scrapeit: try: def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None): if not (website and tag1 and id1 and tag2 and id2)==None: try: page = requests.get(website) soup = BeautifulSoup(page.content, 'html.parser') infotag1 = soup.find_all(tag1, id1) infotag2 = soup.find_all(tag2, id2) priced = [prices.text for prices in infotag1] shirt = [shirts.text for shirts in infotag2] data = { 'Price':priced, 'Shirt_name':shirt} info = pd.DataFrame(data, columns=['Price', 'Shirt_name']) print(info) except: print('Not successful') else: print('Oops! Please enter a website, two tags and thier corresponding ids') except: print('Not successful!')

Il raschietto che hai appena creato è un modulo riutilizzabile e puoi importarlo e utilizzarlo in un altro file Python. Per chiamare la funzione scrape dalla sua classe, usa scrapeit.scrape('Website URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Se non fornisci l'URL e altri parametri, l' istruzione else ti chiederà di farlo.

Per usare quello scaper in un altro file Python, puoi importarlo in questo modo:

from scraper_module import scrapeit scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

Nota: scraper_module è il nome del file Python che contiene la classe scraper.

Puoi anche controllare la documentazione di Beautiful Soup se vuoi approfondire come utilizzarla al meglio.

La bella zuppa è un prezioso strumento per raschiare il web

Beautiful Soup è un potente screen scraper Python che ti dà il controllo su come i tuoi dati vengono trasmessi durante lo scraping. È un prezioso strumento aziendale, in quanto può darti accesso ai dati web della concorrenza come prezzi, tendenze di mercato e altro ancora.

Anche se abbiamo creato un tag scraper in questo articolo, puoi ancora giocare con questa potente libreria Python per creare strumenti di scraping più utili.


Come usare Python come calcolatrice da riga di comando

Come usare Python come calcolatrice da riga di comando

Sebbene sia possibile utilizzare una calcolatrice grafica sul computer, l'interprete del linguaggio di programmazione Python può fungere anche da calcolatrice da tavolo. È uno scherzo così popolare nella comunità Python che è menzionato nel tutorial ufficiale. Ecco come puoi usare Python come calcolatrice.

Gli 8 migliori blog Java per programmatori

Gli 8 migliori blog Java per programmatori

Come programmatore, dovresti accettare le sfide per sopravvivere e costruire alcune meraviglie nel campo dello sviluppo o della programmazione. Quindi, se stai cercando di imparare un linguaggio di programmazione avanzato per migliorare le tue capacità professionali, Java è una delle migliori prospettive in circolazione.

7 comandi vitali per iniziare con Python per principianti

7 comandi vitali per iniziare con Python per principianti

Imparare un nuovo linguaggio di programmazione come Python diventa facile se hai una tabella di marcia completa che dettaglia quali concetti imparare come principiante e come progredire ulteriormente per raggiungere il prossimo traguardo. Anche i programmatori intermedi dovrebbero spesso rispolverare le proprie nozioni di base per costruire una solida base per se stessi.

Principi di web design reattivo

Principi di web design reattivo

Al giorno d'oggi, è pratica comune creare un sito Web o un'app che regoli la sua interfaccia utente a seconda del browser o del dispositivo. Ci sono due approcci per raggiungere questo obiettivo. Il primo prevede la creazione di versioni diverse del tuo sito Web o della tua app per dispositivi diversi. Ma è inefficiente e può portare a errori imprevedibili.

Come contare il numero di cifre in un numero usando C++, Python e JavaScript

Come contare il numero di cifre in un numero usando C++, Python e JavaScript

Lavorare con i numeri è parte integrante della programmazione. Ogni linguaggio di programmazione fornisce supporto per manipolare i numeri in molti modi diversi. In questo articolo imparerai come trovare il numero totale di cifre in un numero intero utilizzando approcci iterativi, basati su log e basati su stringhe.

Le 9 migliori alternative Docker per la gestione dei container

Le 9 migliori alternative Docker per la gestione dei container

I container sono estremamente utili per lo sviluppo, la distribuzione e la gestione del software in un ambiente virtuale. Docker è utile nel processo di containerizzazione, ma non è l'unica piattaforma disponibile. Se stai cercando delle alternative a Docker, non cercare oltre. Questo elenco mostra alcune alternative Docker ricche di funzionalità ed efficienti da utilizzare nel tuo prossimo progetto.

SQL vs NoSQL: qual è il miglior database per il tuo prossimo progetto?

SQL vs NoSQL: qual è il miglior database per il tuo prossimo progetto?

SQL vs NoSQL: qual è il miglior database per il tuo prossimo progetto?

Come incorporare i tweet nei tuoi post di WordPress

Come incorporare i tweet nei tuoi post di WordPress

Incorporare servizi di terze parti nei tuoi post di WordPress è un modo entusiasmante per catturare l'interesse di un visitatore. Il contenuto incorporato fornisce anche indicazioni visive che semplificano la scansione. WordPress ha reso facile l'aggiunta di questo tipo di contenuto.

Come eliminare la cartella dei moduli del nodo con npkill

Come eliminare la cartella dei moduli del nodo con npkill

Node.js è un ambiente di runtime JavaScript che consente di eseguire JavaScript al di fuori dei browser Web, rendendolo una scelta popolare per lo sviluppo di tutti i tipi di applicazioni. Parte della sua popolarità è dovuta alla pletora di pacchetti NPM disponibili per facilitare l'esperienza degli sviluppatori.

Come scrivere e compilare il tuo primo codice di solidità

Come scrivere e compilare il tuo primo codice di solidità

Solidity è il linguaggio di programmazione utilizzato dagli smart contract sulla blockchain di Ethereum. È un linguaggio di programmazione orientato agli oggetti e tipizzato in modo statico.

I 5 migliori badge che supereranno il tuo repository GitHub

I 5 migliori badge che supereranno il tuo repository GitHub

I badge GitHub possono aumentare la leggibilità di un repository fornendo agli utenti un modo rapido per acquisire le metriche del repository. I badge possono essere incorporati nel tuo README.md per chiarire l'importanza e la necessità del tuo progetto ad altri sviluppatori. Di conseguenza, i lettori si fanno un'idea molto veloce del repository controllando i badge allegati.

Che cosè la Giornata internazionale dei programmatori? 3 modi per festeggiare questanno

Che cosè la Giornata internazionale dei programmatori? 3 modi per festeggiare questanno

Le giornate celebrative internazionali sono un bel modo per dare riconoscimento a questioni sociali, giornate storiche e rispettive carriere. La Giornata internazionale dei programmatori celebra il ruolo che i programmatori svolgono per migliorare la vita di tutti i giorni. Il mondo civilizzato in cui viviamo è un prodotto del duro lavoro svolto dai programmatori.

Come funziona il metodo Python String format()? 10 esempi

Come funziona il metodo Python String format()? 10 esempi

Che si tratti di una query di database o di risultati di operazioni matematiche, il metodo del formato stringa Python offre un modo più dinamico e accattivante per presentare i risultati a un utente.

Visual Studio 2022 vs. 2019: dovresti eseguire laggiornamento ora? spiegato

Visual Studio 2022 vs. 2019: dovresti eseguire laggiornamento ora? spiegato

All'inizio di quest'anno, Microsoft ha rilasciato la versione di anteprima di Visual Studio 2022 nel mondo della programmazione selvaggia. Questa è una buona notizia! È un IDE estremamente popolare, ma dovrebbe essere messo a punto o forse anche una revisione, dato il ritmo del cambiamento nell'ecosistema DevOps in cui prospera.

Una semplice introduzione alle metriche del software

Una semplice introduzione alle metriche del software

Le metriche del software sono misure utilizzate per quantificare vari aspetti del software. Questi aspetti possono variare dal costo, alla qualità e all'efficienza del team di sviluppo.

Come installare .NET Framework versione 3.5 su Windows 10

Come installare .NET Framework versione 3.5 su Windows 10

Come utente Windows, probabilmente ti sei imbattuto almeno una volta nelle parole .NET Framework. È un framework software sviluppato da Microsoft che ti consente di creare ed eseguire programmi C#, C++, F# e Visual Basic. L'ultima versione di .NET è la 4.8, ma il tuo computer potrebbe aver bisogno di una versione precedente di .NET (come .NET 3.5) per eseguire alcune app.

Flask o CherryPy: quale framework Python dovresti usare?

Flask o CherryPy: quale framework Python dovresti usare?

Se sei uno sviluppatore Python, puoi trarre grandi vantaggi dalla gamma di framework disponibili. Mentre alcuni framework sono più adatti per grandi ecosistemi, altri sono specializzati nel servire specifici obiettivi di sviluppo. Continua a leggere per apprendere le funzionalità di base, gli usi e le differenze tra due framework Python: Flask e CherryPy.

Come trovare cubi e quadrati perfetti a N cifre utilizzando Python, C++ e JavaScript

Come trovare cubi e quadrati perfetti a N cifre utilizzando Python, C++ e JavaScript

Molti programmatori amano risolvere complicati problemi matematici usando il codice. Aiuta ad affinare la mente e migliorare le capacità di risoluzione dei problemi. In questo articolo imparerai come trovare i quadrati e i cubi perfetti a n cifre più piccoli e più grandi utilizzando Python, C++ e JavaScript. Ciascun esempio contiene anche un output di esempio per diversi valori.

Come aggiungere Python alla variabile PATH di Windows

Come aggiungere Python alla variabile PATH di Windows

L'esecuzione di Python dal terminale è spesso inevitabile. Tuttavia, se hai appena installato Python su Windows 10 per la prima volta, eseguirlo tramite il Terminale di Windows è possibile solo se viene aggiunto alla variabile di ambiente PATH di Windows.

Come usare listruzione if di Python?

Come usare listruzione if di Python?

L'istruzione if è la forza trainante della programmazione logica. Di conseguenza, una migliore comprensione di Python è un'aggiunta significativa alle tue capacità di programmazione in Python.

Come usare Python come calcolatrice da riga di comando

Come usare Python come calcolatrice da riga di comando

Sebbene sia possibile utilizzare una calcolatrice grafica sul computer, l'interprete del linguaggio di programmazione Python può fungere anche da calcolatrice da tavolo. È uno scherzo così popolare nella comunità Python che è menzionato nel tutorial ufficiale. Ecco come puoi usare Python come calcolatrice.

Gli 8 migliori blog Java per programmatori

Gli 8 migliori blog Java per programmatori

Come programmatore, dovresti accettare le sfide per sopravvivere e costruire alcune meraviglie nel campo dello sviluppo o della programmazione. Quindi, se stai cercando di imparare un linguaggio di programmazione avanzato per migliorare le tue capacità professionali, Java è una delle migliori prospettive in circolazione.

7 comandi vitali per iniziare con Python per principianti

7 comandi vitali per iniziare con Python per principianti

Imparare un nuovo linguaggio di programmazione come Python diventa facile se hai una tabella di marcia completa che dettaglia quali concetti imparare come principiante e come progredire ulteriormente per raggiungere il prossimo traguardo. Anche i programmatori intermedi dovrebbero spesso rispolverare le proprie nozioni di base per costruire una solida base per se stessi.

Principi di web design reattivo

Principi di web design reattivo

Al giorno d'oggi, è pratica comune creare un sito Web o un'app che regoli la sua interfaccia utente a seconda del browser o del dispositivo. Ci sono due approcci per raggiungere questo obiettivo. Il primo prevede la creazione di versioni diverse del tuo sito Web o della tua app per dispositivi diversi. Ma è inefficiente e può portare a errori imprevedibili.

Come contare il numero di cifre in un numero usando C++, Python e JavaScript

Come contare il numero di cifre in un numero usando C++, Python e JavaScript

Lavorare con i numeri è parte integrante della programmazione. Ogni linguaggio di programmazione fornisce supporto per manipolare i numeri in molti modi diversi. In questo articolo imparerai come trovare il numero totale di cifre in un numero intero utilizzando approcci iterativi, basati su log e basati su stringhe.

Le 9 migliori alternative Docker per la gestione dei container

Le 9 migliori alternative Docker per la gestione dei container

I container sono estremamente utili per lo sviluppo, la distribuzione e la gestione del software in un ambiente virtuale. Docker è utile nel processo di containerizzazione, ma non è l'unica piattaforma disponibile. Se stai cercando delle alternative a Docker, non cercare oltre. Questo elenco mostra alcune alternative Docker ricche di funzionalità ed efficienti da utilizzare nel tuo prossimo progetto.

SQL vs NoSQL: qual è il miglior database per il tuo prossimo progetto?

SQL vs NoSQL: qual è il miglior database per il tuo prossimo progetto?

SQL vs NoSQL: qual è il miglior database per il tuo prossimo progetto?

Come incorporare i tweet nei tuoi post di WordPress

Come incorporare i tweet nei tuoi post di WordPress

Incorporare servizi di terze parti nei tuoi post di WordPress è un modo entusiasmante per catturare l'interesse di un visitatore. Il contenuto incorporato fornisce anche indicazioni visive che semplificano la scansione. WordPress ha reso facile l'aggiunta di questo tipo di contenuto.

Come eliminare la cartella dei moduli del nodo con npkill

Come eliminare la cartella dei moduli del nodo con npkill

Node.js è un ambiente di runtime JavaScript che consente di eseguire JavaScript al di fuori dei browser Web, rendendolo una scelta popolare per lo sviluppo di tutti i tipi di applicazioni. Parte della sua popolarità è dovuta alla pletora di pacchetti NPM disponibili per facilitare l'esperienza degli sviluppatori.

Come scrivere e compilare il tuo primo codice di solidità

Come scrivere e compilare il tuo primo codice di solidità

Solidity è il linguaggio di programmazione utilizzato dagli smart contract sulla blockchain di Ethereum. È un linguaggio di programmazione orientato agli oggetti e tipizzato in modo statico.