Il web scraping è una tecnica essenziale per l’elaborazione dei dati. Un’applicazione comune è il download di foto da piattaforme di social media come Instagram.
Per questa attività, utilizzeremo Python
, un linguaggio di programmazione popolare, e Instaloader
, una libreria che permette di scaricare foto, video, e altre informazioni da Instagram.
Vediamo come implementare questo in Python con il seguente script:
import instaloader
import logging
def download_instagram_profile(username):
try:
# Create a Logger
logger = logging.getLogger('instaloader')
logger.setLevel(logging.INFO)
# Set up logging to console
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# Add the console handler to the logger
logger.addHandler(console)
# Create an instance of Instaloader and download the profile
L = instaloader.Instaloader()
L.download_profile(username, profile_pic_only=False)
print(f"Download of {username}'s photos completed.")
except Exception as e:
print(f"An error occurred: {e}")
def main():
username = input("Enter Instagram username: ")
download_instagram_profile(username)
if __name__ == "__main__":
main()
Analisi del Codice
import instaloader
: Importiamo la libreriainstaloader
per utilizzare le sue funzionalità.import logging
: Importiamo il modulologging
per registrare gli eventi durante l’esecuzione del programma.- Definiamo una funzione
download_instagram_profile(username)
che gestirà il processo di download. Prende un argomento:username
, il nome utente Instagram da cui vogliamo scaricare le foto. - Dentro
download_instagram_profile(username)
, utilizziamo un bloccotry-except
per gestire eventuali errori che potrebbero verificarsi durante l’esecuzione del programma. logger = logging.getLogger('instaloader')
: Creiamo un logger che registrerà eventi specifici di Instaloader.logger.setLevel(logging.INFO)
: Impostiamo il livello di logging suINFO
in modo che vengano registrate tutte le informazioni rilevanti.console = logging.StreamHandler()
: Creiamo un gestore di logging che invierà i log alla console.console.setLevel(logging.INFO)
: Impostiamo il livello del gestore di console suINFO
.logger.addHandler(console)
: Aggiungiamo il gestore di console al logger.L = instaloader.Instaloader()
: Creiamo un’istanza dell’oggettoInstaloader
.L.download_profile(username, profile_pic_only=False)
: Utilizziamo il metododownload_profile()
per scaricare il profilo Instagram specificato. Impostiamoprofile_pic_only=False
per scaricare tutte le foto dell’utente, non solo la foto del profilo.print(f"Download of {username}'s photos completed.")
: Stampiamo un messaggio quando il download è completo.except Exception as e
: Nel caso si verifichi un’eccezione durante l’esecuzione del codice all’interno del bloccotry
, la catturiamo e stampiamo un messaggio di errore.- Definiamo la funzione
main()
, che avvia il processo chiedendo all’utente di inserire un nome utente Instagram e quindi chiamadownload_instagram_profile(username)
. if __name__ == "__main__": main()
: Questo codice garantisce chemain()
venga chiamato solo quando lo script viene eseguito direttamente, e non quando è importato come modulo.
Con Python e la libreria Instaloader possiamo, con questo script, scaricare foto da un profilo Instagram. Abbiamo anche implementato la registrazione di logging per monitorare l’avanzamento del download. Ricordate: è importante rispettare i termini di servizio delle piattaforme di social media e assicurarsi di avere il permesso di scaricare qualsiasi contenuto.