Web Scraping con Python

di il
5 risposte

Web Scraping con Python

Ciao a tutti ragazzi,

mi chiamo Alessandro e sono un neofita della programmazione, essendomi avvicinato a tale "universo" (chiamarlo "mondo" sarebbe probabilmente riduttivo) a 34 anni suonati e dopo essere comunque sempre stato uno abbastanza "smanettone" in informatica, sin da bambino. Approfitto quindi del presente post presentarmi e salutarvi tutti, certo che avremo occasione di condividere insieme la nostra comune passione tra le pagine di questa community!

Venendo all'oggetto del thread, sto realizzando uno (anzi due, e qui è il problema... ora ci arrivo) script in Python per web scraping con l'obiettivo di ottenere un programma che permetta, a fronte di uno specifico url dato in input dall'utente, di estrarre alcune specifiche informazioni dalla relativa pagina web.

Facendo degli esempi puramente generici, immaginiamo che io voglia estrarre dal sito della Azienda1 alcune informazioni contenute nelle singole pagine di ogni film prodotto dalla casa cinematografica, come ad esempio titolo del film, nome del regista, anno d'uscita, durata del film, budget, incasso totale, etc.

Queste informazioni, all'interno di ogni pagina relativa ad ogni singolo film sono contenute in specifiche sezioni della pagina e lo script "Azienda1 script" funziona egregiamente.

Ora, immaginiamo che la stessa cosa voglia farla anche per il sito della Azienda2, sempre web scraping per le stesse informazioni tratte anche in questo caso dalle singole pagine dei singoli film il cui url viene dato di volta in volta manualmente dall'utente. La struttura del sito della Azienda2, ancorché riportante tutte le informazioni che voglio acquisire, è completamente diversa da quella del sito della Azienda1, conseguentemente lo script "Azienda2 script", che anch'esso funziona egregiamente, riesce però a lavorare solo sul sito della Azienda2, come lo script "Azienda1 script" vi riesce solo su quello della Azienda1.

La mia domanda è: come unisco i due script in uno solo creando una condizione, a valle dell'url dato in input dall'utente, tale per cui se inserisco un url relativo al sito della Azienda1 mi esegua la funzione Azienda1() mentre se inserisco un url del sito Azienda2 mi esegua la funzione Azienda2() ?

Vi preciso che la sintassi dei due url è, sempre a titolo esemplificativo:

- dominio/movies/codice/ (Azienda1)
- dominio/film/codice/ (Azienda2)

Grazie in anticipo a tutti voi.

5 Risposte

  • Re: Web Scraping con Python

    Ciao niente link o nomi di aziende nel forum.
    Ho sostituito tutto con dei segnaposto.
  • Re: Web Scraping con Python

    Praticamente il tuo approccio e': voglio scalare il Mont Everest, e visto che non ho altro da fare, inizio a camminare scalzo

    Forse, dico "forse", bisognerebbe iniziare calzando almeno le ciabattine da camera o da spiaggia, poi le scarpe da ginastica, poi gli scarponi da montagna ed infine gli scarponi da ghiacciaio con i ramponi in acciaio!

    In semplice "if" ed e' fatta.

    Forse,e dico sempre "forse", converrebbe iniziare STUDIANDO i concetti fondamentali di programmazione, POI un linguaggio di programmazione (Python va piu' che bene), POI si inizia a fare programmini semplici per capire ALMENO le strutture di controllo FONDAMENTALI (l' "if" e' STRA-FONDAMENTALE), e SOLO DOPO ci si puo' lanciare in voli pindarici come il web scraping

    https://scrapy.org
    https://www.crummy.com/software/BeautifulSoup
  • Re: Web Scraping con Python

    Toki ha scritto:


    Ciao niente link o nomi di aziende nel forum.
    Ho sostituito tutto con dei segnaposto.
    Oopps, scusate... mi era sfuggito questo punto del regolamento e pensavo che rimanere sul generico fosse consentito. Chiedo venia.

    migliorabile ha scritto:


    Praticamente il tuo approccio e': voglio scalare il Mont Everest, e visto che non ho altro da fare, inizio a camminare scalzo

    Forse, dico "forse", bisognerebbe iniziare calzando almeno le ciabattine da camera o da spiaggia, poi le scarpe da ginastica, poi gli scarponi da montagna ed infine gli scarponi da ghiacciaio con i ramponi in acciaio!

    In semplice "if" ed e' fatta.

    Forse,e dico sempre "forse", converrebbe iniziare STUDIANDO i concetti fondamentali di programmazione, POI un linguaggio di programmazione (Python va piu' che bene), POI si inizia a fare programmini semplici per capire ALMENO le strutture di controllo FONDAMENTALI (l' "if" e' STRA-FONDAMENTALE), e SOLO DOPO ci si puo' lanciare in voli pindarici come il web scraping

    https://scrapy.org
    https://www.crummy.com/software/BeautifulSoup
    Grazie dei consigli, anche se il tuo post, esattamente come il nome dell’autore è “migliorabile”, quantomeno per il tedioso tono di saccenza.

    La funzione IF la conosco abbastanza bene, se non altro perché trattata in praticamente tutti i libri che ho letto sulla programmazione in Python (altri sulla programmazione in generale, in effetti, non ne ho aperti). Quando parlo di “condizione” è infatti proprio alla funzione IF che mi riferisco. La mia domanda era semplicemente volta a capire sulla base di quale variabile far capire al programma se siamo nella condizione A o nella condizione B, dovendo estrapolare tale variabile unicamente da una porzione dell’url. Chiedevo solo consiglio.

    Per quanto riguarda l’Everest... beh, si, probabilmente mi sono accinto a scalarlo camminando a piedi nudi, ma come disse Einstein: “Io amo viaggiare, non mi interessa arrivare!”

    Saluti.
  • Re: Web Scraping con Python

    Script ha scritto:


    La mia domanda è: come unisco i due script in uno solo creando una condizione, a valle dell'url dato in input dall'utente, tale per cui se inserisco un url relativo al sito della Azienda1 mi esegua la funzione Azienda1() mentre se inserisco un url del sito Azienda2 mi esegua la funzione Azienda2() ?
    • Imbusti i due script in due funzioni: Azienda1(url) e Azienda2(url);
    • nel main leggi l'url (da command line o via input) in una stringa;
    • smonti l'url per estrarre il dominio;
    • poi fai un if:
    if dominio=="dominio1":
        Azienda1(url)
    else:
        Azienda2(url)
    Per smontare l'url hai diverse opzioni, ad esempio puoi usare le funzioni della classe str, oppure una regexp, oppure molto semplicemente:
    if "sito1.dominio" in url:
        Azienda1(url)
    else:
        Azienda2(url)
  • Re: Web Scraping con Python

    Ottimo Andrea, grazie mille!!

    Delle due soluzioni mi sembra più "pulita" la seconda, ove la condizione la vai a creare semplicemente in base alla presenza dei caratteri del dominio 1 o 2 nell'url e non hai neppure bisogno di smontarlo andando a creare un'ulteriore variabile...

    Chiarissimo, grazie davvero.
Devi accedere o registrarti per scrivere nel forum
5 risposte