Web scraping con Python (I Parte)

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Python- le variabili


Introduzione al Web Scraping

Parliamo di……Scraping

La necessità di “raschiare i siti Web” è arrivata con la diffusione di Internet, dove ogni giorno vengono condivisi  contenuti e molti dati. I primi web scaper famosi sono stati inventati dagli sviluppatori dei motori di ricerca (come Google o AltaVista). Questi scraper attraversano (quasi) l’intera Internet, scansionano ogni pagina web, estraggono informazioni da essa e costruiscono un indice in cui tutti noi possiamo cercare.
Non tutti, al contrario,sanno che a loro volta possono implementare uno scraper. Non mi sto certo riferendo a qualcosa che possa fare concorrenza a Google ma, restringendo gli ambiti a poche pagine web, estrarre le informazioni che ci interessano in modo strutturato, importandole, magari ,in un database o nei file di tipo (JSON, CSV, XML, fogli Excel).


Perchè fare scraping?

Ci sono molti casi in cui fare uso di web scraping può tornare utile.
Uno dei motivi principali è estrarre informazioni da un sito web come, per esempio, l’elenco dei prodotti venduti da un’azienda,i dati nutrizionali di generi alimentari, i risultati di eventi sportivi.La maggior parte di questi progetti è propedeutico di attività di analisi dei dati, dove la raccolta manuale delle informazioni  è un processo oneroso dal punto di vista temporale ed anche soggetto a numerosi errori.


A volte,inoltre, dobbiamo implementare progetti in cui estrarre dati da un sito web per poi caricarli in un altro, cioè una migrazione.
Teoricamente, addirittura, potremmo scaricare l’intero Web! Non è impossibile, iniziando da un sito per  poi seguirne tutti i link presenti.
Non ti consiglio di iniziare questo progetto perché , sicuramente, non avresti  spazio su disco sufficiente per contenere l’intero Web, ma l’idea è, senza alcun dubbio,interessante!! Fammi sapere se ti vorrai cimentare in un esperimento di tale portata!

Ti potrebbe interessare anche:  Web scraping. Gli strumenti da utilizzare in python. Analizziamo i trend di ricerca con Google Trends

Problemi di scraping.

Una delle parti più difficili della raccolta di dati tramite i siti Web è che siti web differiscono. Intendo non solo nei dati ma anche nel layout. È difficile
creare un web scraping adatto a tutti perché ogni sito Web ha un diverso layout, utilizza codici HTML  diversi (o nessun) per identificare i campi e così via.
E se ciò non bastasse, molti siti web cambiano layout frequentemente. Se ciò accade, il tuo programma di scraping  non funziona più come prima.
In questi casi, l’unica opzione è rivisitare il codice e adattarlo alle modifiche del sito web di destinazione.

Impareremo gli strumenti di base che  Python mette a disposizione per fare web scraping.

Presto ti renderai conto di quanto sia difficile creare  una scraper da zero..
Ma Python ha una grande comunità e sono disponibili molti progetti per aiutarti a concentrarti sulla parte importante del tuo scraper: l’estrazione dei dati.
Vedremo quindi,come si utilizzano  strumenti  ( librerie) come  Request, Beautiful Soup e Scrapy.

Come installare BeautifulSoup

Andremo ad utilizzare una libreria per il web scraping chiamata BeautifulSoup, ma esistono librerie alternative che possono essere utilizzate (per esempio scrapy). Inoltre, per seguire l’esempio successivo dovrete installare anche la libreria “requests” che serve per eseguire richieste HTTP attraverso codice Python.

Installare BeautifulSoup è molto semplice e può essere fatto attraverso pip.
l comando da eseguire nel terminale per installare BeautifulSoup è il seguente:
pip install beautifulsoup4 Mentre per installare requests:
pip install requests

Come ottenere il contenuto di una pagine HTML attraverso codice Python

Per questo esempio andremo ad ottenere i dati delle previsioni metereologiche per Milano dal sito ilmeteo.it Ovviamente questo non è il metodo migliore per ottenere dati delle previsioni meteo, ma questo è solo un esempio.

Ti potrebbe interessare anche:  Web scraping con Python. Parsing del file robots.txt.
Vediamo un semplice codice Python per ottenere il contenuto di una pagine HTML sotto forma di una struttura dati Python.
E’ chiaro che,per una maggiore comprensione degli esempi, dovete “masticare” un pochino di html, i cui concetti di base  potete trovare Qui
ESEMPIO 1
Vogliamo ottenere le temperature odierne per Milano.

import requests

from bs4 import BeautifulSoup as bs

r = requests.get(“https://www.ilmeteo.it/meteo/Milano”)

contenuto = bs(r.text)

temps = contenuto.findAll(“span”, {“class”: “tmax”})

for temp in temps:

print(temp.text)

Il risultato è il seguente:

fare scraping con BeautifulSoup

ESEMPIO 2

Troviamo titolo e indici per la pagina https://it.wikipedia.org/wiki/Hello_world

from bs4 import BeautifulSoup
import requests

main_url = "https://it.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")

# trovo il titolo principale H1.
title = soup.find("h1", class_ = "firstHeading") 
print (" il titolo H1 è " + title.get_text())

# Troviamo l'indice
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]
print( "Indice ")
print( mid_titles)
# ora usando i selettori CSS troviamo i link degli articoli
print( "Paragrafi")
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
print (tag.a.get("href"))
Il risultato è il seguente:
fare scraping con BeautifulSoup 

[elementor-template id=”12586″]

(572)