Utilizzo di Power Query per estrarre dati non tabulari da pagine Web

Condividere su Facebook
Condividere su twitter
Condividere su linkato
Condividere su telegramma
Condividere su WhatsApp

Contenuti

introduzione

Ivan: Di recente mi sono trasferito in Australia con la mia famiglia. Durante la ricerca di un posto dove vivere, Ho dovuto trovare una buona coppia di sobborgo e scuola. Ho trovato fatti interessanti in https://www.myschool.edu.au/. tuttavia, non c'è possibilità di confrontare le scuole. Fornisce solo alcune statistiche sulle scuole australiane, una pagina alla volta. Informazioni presentate su una tipica pagina del profilo della scuola (P. Non. Scuola pubblica di Burwood) è come mostrato di seguito.

img_5b333087a95a4-4304072

Significa che, Nel peggiore dei casi, possiamo copiare / incollare i dati manualmente in Excel ed eseguire la nostra analisi. Certo, questo può essere fatto solo per un numero limitato di scuole. Anche per venti scuole ci vorrebbe un po' di tempo. tuttavia, oggi, quando abbiamo strumenti come Power Query (Ottenere & Trasformare) in excel, possiamo raccogliere dati da siti web in modo efficiente e facilmente "aggiornabile". Tutto ciò che descrivo e condivido in questo post è creato solo per scopi didattici non commerciali.

Ottenere dati da una scuola

Prendi ad esempio la Burwood School. Copia l'URL del browser

https://www.myschool.edu.au/SchoolProfile/Index/104736/BurwoodPublicSchool/41369.

E controlla i dati di questo URL in Excel.

img_5b2230a733a87-1237330

Nota: Di solito faccio tutte le query in Excel. Se richiesto, li copio / incolla in Power BI.

Power Query rileva automaticamente tutte le tabelle disponibili nella pagina Web e presenta le opzioni in modo che possiamo scegliere quella che ci interessa. Quando abbiamo bisogno di più di una tabella, dobbiamo creare un'altra query.

Per questa pubblicazione, diciamo che ci interessa il parametro "Lingua sorgente diversa dall'inglese". Ma in questo caso, Power Query rileva solo una tabella nella pagina della scuola, Non sono i dati che voglio!

img_5b33345906a55-6562785

I dati che voglio sono solo un valore in un grafico e non in una tabella (n. ° 1 prossimo) e, così, non può essere utilizzato a fini di confronto.

img_5b33352257942-8845362

Quindi, i dati richiesti non sono in formato tabellare. Puoi solo recuperare tavoli di pagine web utilizzando Ottieni dati dal web. Ciò significa che dobbiamo trovare un modo diverso per ottenere questi dati da una pagina web.. fortunatamente, c'è un modo per farlo e lo condivido con te in questo post.

Il metodo

E Google Chrome, noi possiamo Ispezionare, controllare elementi della pagina Web facendo clic con il pulsante destro del mouse e selezionando Ispeziona (n. ° 1 prossimo).

img_5b333864336d5-1125391

Nel codice HTML qui sotto, possiamo vederlo “97%” (n. ° 1 prossimo) è un testo tra le etichette “” (n. ° 2 prossimo) che a sua volta appartiene al tag principale “” (n. ° 3 prossimo ), e tutto questo fa parte di"<div id = ”studenti non di lingua inglese” ” (# 4 prossimo). Probabilmente, questo è ciò di cui abbiamo bisogno.

img_5b3338fe920fa-8988053

Questo può sembrare spaventoso, ma questi tag ci aiuteranno a trovare i dati che vogliamo nel testo HTML della pagina web. Quindi, dobbiamo prima ottenere quel testo. Tornando a Power Query, “Dal web”, tasto destro sull'url (n. ° 1 prossimo) e quindi fare clic su Modifica (n. ° 2 prossimo).

img_5b3339545828e-2670689

Power Query avvolge automaticamente il contenuto ricevuto dal Web nella funzione Web.Page come mostrato di seguito.

img_5b333990e588a-9786590

Ma quello di cui abbiamo bisogno è solo il testo. Quindi dobbiamo cambiare le impostazioni “Apri file come” un “File di testo” nel passaggio Sorgente. Fare clic sull'ingranaggio per modificare il passaggio di origine.

img_5b3339dcb0471-1265728

Quando usiamo “File di testo”, Power Query carica le righe html dalla pagina web in una colonna.

img_5b333a01ea0df-8619053

Possiamo filtrare la colonna per trovare la riga che contiene il testo "non EnglishSpeakingStudents".

img_5b333a3130ec6-4490417

Il passaggio precedente lascia una singola riga nella tabella. Tutte le altre righe sono state rimosse. Selezionando l'unica riga rimasta dopo il filtraggio, possiamo vedere il “97%” richiesto come parte del testo salvato.

img_5b333a6544350-3301356

Ora, possiamo estrarre facilmente questo testo utilizzando la funzione Power Query standard “Testo tra delimitatori”.

img_5b333aa881a66-8194883

Tutto quello che dobbiamo fare è specificare i delimitatori di inizio e fine, come mostrato di seguito. Molto facile, non è necessario programmare le proprie funzioni, basta usare l'interfaccia utente per aiutare.

img_5b333ad21eeae-1984917

Questo aggiunge una nuova colonna con il valore che stiamo cercando.

img_5b333b1d10c80-6195782

Ottieni dati per un'altra scuola

In teoria, se cambiamo l'URL con un altro ID scuola, dovrebbe funzionare allo stesso modo, perché il testo HTML avrà una struttura simile nella pagina del profilo dell'altra scuola.
Clicca su “Editor avanzato” e cerca l'URL con l'identificazione della scuola nel codice lingua 'M'.

img_5b333b5b9f9b8-1393976

Per applicare la nostra query alla pagina del profilo di un'altra scuola, dobbiamo cambiare solo l'url.
Prendiamo, ad esempio, Scuola Pubblica Concord. Ho cambiato la query e ora la query è tornata 69 (come mostrato di seguito), che è lo stesso della pagina della scuola, Funziona!

img_5b333b8102cd7-2558912

Converti URL in parametro

Ora funziona, Convertirò l'URL in un parametro invece di codificarlo come stringa. Meglio creare un parametro per renderlo più flessibile. Home Gestisci parametri Nuovo parametro

img_5b333bf80ffc9-9295333

Compila i campi richiesti (Nome parametro = URL, Testo, Qualsiasi valore)

Uso un'altra scuola qui (Scuola pubblica di Meadowbank https://www.myschool.edu.au/school/41257) per verificare che la soluzione funzioni indipendentemente dalla scuola selezionata.

img_5b333c2286445-8444819

Ora che ho URL come parametroR, necessario cambia il codice di Power Query in modo che punti al parametro anziché alla stringa hardcoded.

Per questo, vai alle impostazioni del passaggio dell'origine della query. E seleziona Parametro dall'elenco a discesa.

img_5b333c57364ad-5835002

Crea una funzione da una query

Il motivo per cui abbiamo iniziato questo compito è confrontare le scuole. Quindi abbiamo bisogno di collegamenti per tutte le pagine del profilo della scuola.

Il modo più efficiente per farlo in Power Query è creare una funzione da una query esistente. Nell'editor di Power Query, fare clic con il tasto destro del mouse sulla query e selezionare “Crea funzione”.

img_5b333cfd46dd5-3530866

Dai un nome al tuo ruolo.

img_5b333d2124f68-1261930

La funzione replica il codice M utilizzato nella query iniziale, ma aggiungi un'opzione per chiamarsi con un parametro url. Nota che la query originale è ancora lì, più una nuova funzione.

img_5b333d4c10d41-7382756

Ottieni URL di più scuole

L'attuale versione del sito Web consente di cercare le scuole, ad esempio, per nome del sobborgo o codice postale.

img_5b333d8542517-5320757

mentre cerchiamo, nel browser possiamo vedere un URL che contiene i parametri di ricerca –
https://www.myschool.edu.au/school-search?FormPosted=True&SchoolSearchQuery=ryde&SchoolSector=G&SchoolType=P&State=NSW

Usa i seguenti parametri:
SchoolSearchQuery = ryde – ad esempio, sobborghi intorno a Ryde
Settore Scolastico = G – governo
Tipo di scuola = P – Primario
Stato = NSW
Quindi, se richiesto, detta stringa può essere generata con una formula in Power Query.
Allo stesso modo descritto sopra per "Ottieni dati da una scuola", possiamo consultare questa pagina web dai risultati di ricerca ed estrarre informazioni utili dal testo.

Ad esempio, possiamo ottenere tutte le informazioni mostrate nella pagina dei risultati di ricerca insieme agli URL delle scuole che richiediamo come parametri, come mostrato di seguito.

img_5b333e5005d5d-5957985

Avere l'URL di ogni scuola, possiamo espandere questa tabella con le informazioni di ogni pagina del profilo della scuola, ad esempio, insieme a “% studenti non di lingua inglese” come mostrato di seguito, chiamare la funzione come colonna aggregata.

img_5b333e7ae5be5-3079163

Questo è tutto. Le informazioni necessarie per confrontare le scuole sono disponibili ora.

Puoi applicare la stessa tecnica a qualsiasi sito web in cui i dati sono pubblicati in formato non tabellare.

Esercizi pratici

Ora che sai come interrogare dati non tabulari dal web, prova a ottenere i tassi di cambio nelle pagine seguenti:

https://www.xe.com/currencytables/?from=AUD&date=2018-06-19

http://www.floatrates.com/daily/AUD.xml

https://www.exchange-rates.org/converter/AUD/EUR/1

https://www.x-rates.com/table/?from=AUD&amount=1

Un modo semplice per ottenere dati sulle scuole australiane

Sebbene l'intenzione di questo post sia dimostrare ciò che è possibile con Power Query, nel caso foste curiosi di saperne di più sulle scuole australiane, c'è un'opzione più semplice per recuperare i dati dalle scuole.
Nel piè di pagina di https://www.myschool.edu.au sito web puoi trovare un link a http://www.acara.edu.au/contact-us/acara-data-access dove tutti i dati sono disponibili in formato Excel.

img_5b33405c3ebc9-7944837

Circa l'autore

Ivan Bondarenko (alias Ivan Bond) è uno specialista in report basati su Excel e Power BI, sviluppatore vba, autore open source Strumento di automazione di SAP Business Objects e Soluzione basata su Excel per pianificare l'aggiornamento dei file Excel (noto anche come Power Refresh).

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.