Verwenden von Power Query zum Extrahieren nicht tabellarischer Daten aus Webseiten

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Einführung

Ivan: Ich bin vor kurzem mit meiner Familie nach Australien gezogen. Bei der Wohnungssuche, Ich musste ein gutes Vorort- und Schulpaar finden. Ich habe interessante Fakten gefunden in https://www.myschool.edu.au/. Aber trotzdem, Es gibt keine Möglichkeit, Schulen zu vergleichen. Es bietet nur einige Statistiken zu australischen Schulen, eine Seite nach der anderen. Informationen auf einer typischen Schulprofilseite (P. Nicht. Burwood öffentliche Schule) es ist wie unten gezeigt.

img_5b333087a95a4-4304072

Bedeutet, dass, im schlimmsten Fall, wir können kopieren / fügen Sie Daten manuell in Excel ein und führen Sie unsere eigene Analyse durch. Natürlich, dies ist nur für eine begrenzte Anzahl von Schulen möglich. Selbst für zwanzig Schulen würde es ein bisschen dauern. Aber trotzdem, heute, wenn wir Tools wie Power Query haben (Bekommen & Verwandeln) in Excel, wir können Daten von Websites effizient und einfach "aktualisierbar" sammeln. Alles, was ich in diesem Beitrag beschreibe und teile, ist nur für nicht-kommerzielle Bildungszwecke erstellt.

Daten von einer Schule beziehen

Nehmen wir zum Beispiel die Burwood School. Browser-URL kopieren

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

Und überprüfen Sie die Daten dieser URL in Excel.

img_5b2230a733a87-1237330

Notiz: Normalerweise mache ich alle Abfragen in Excel. Falls erforderlich, Ich kopiere sie / in Power BI stecken geblieben.

Power Query erkennt automatisch alle auf der Webseite verfügbaren Tabellen und präsentiert Optionen, damit wir diejenige auswählen können, die uns interessiert. Wenn wir mehr als eine Tabelle benötigen, müssen wir eine weitere Abfrage erstellen.

Für diese Veröffentlichung, Nehmen wir an, wir interessieren uns für den Parameter "Ausgangssprache außer Englisch". Aber in diesem Fall, Power Query erkennt nur eine Tabelle auf der Schulseite, Nicht die Daten, die ich will!

img_5b33345906a55-6562785

Die Daten, die ich möchte, sind nur ein Wert in einem Diagramm und nicht in einer Tabelle (n. ° 1 dann) Ja, Daher, kann nicht zu Vergleichszwecken verwendet werden.

img_5b33352257942-8845362

Dann, die erforderlichen Daten liegen nicht im Tabellenformat vor. Sie können nur abrufen Tabellen von Webseiten mit Daten aus dem Web abrufen. Dies bedeutet, dass wir einen anderen Weg finden müssen, um diese Daten von einer Webseite zu erhalten.. Glücklicherweise, Es gibt eine Möglichkeit, dies zu tun, und ich teile es mit Ihnen in diesem Beitrag.

Die Methode

Und Google Chrome, wir können Inspizieren Webseitenelemente, indem Sie mit der rechten Maustaste klicken und dann Prüfen auswählen (n. ° 1 dann).

img_5b333864336d5-1125391

Im HTML-Code unten, wir können das sehen “97%” (n. ° 1 dann) ist ein Text zwischen den Etiketten “” (n. ° 2 dann) was wiederum zum Haupt-Tag gehört “” (n. ° 3 dann ), und das alles ist ein Teil von "<div id = ”nonEnglishSpeakingStudents” ” (# 4 dann). Wahrscheinlich, das brauchen wir.

img_5b3338fe920fa-8988053

Das mag beängstigend erscheinen, aber diese Tags helfen uns, die gewünschten Daten im HTML-Text der Webseite zu finden. Dann, Wir müssen zuerst diesen Text bekommen. Zurück zu Power Query, “Aus dem Internet”, Rechtsklick auf die URL (n. ° 1 dann) und klicke dann auf Bearbeiten (n. ° 2 dann).

img_5b3339545828e-2670689

Power Query umschließt automatisch den aus dem Web empfangenen Inhalt in der Web.Page-Funktion, wie unten gezeigt.

img_5b333990e588a-9786590

Aber was wir brauchen, ist nur der Text. Also müssen wir die Einstellungen ändern “Datei öffnen als” ein “Textdatei” im Quellpass. Klicken Sie auf das Zahnrad, um den Quellschritt zu bearbeiten.

img_5b3339dcb0471-1265728

Wenn wir verwenden “Textdatei”, Power Query lädt die HTML-Zeilen von der Webseite in eine Spalte.

img_5b333a01ea0df-8619053

Wir können die Spalte filtern, um die Zeile zu finden, die den Text "nonEnglishSpeakingStudents" enthält..

img_5b333a3130ec6-4490417

Der vorherige Schritt hinterlässt eine einzelne Zeile in der Tabelle. Alle anderen Zeilen wurden entfernt. Durch Auswahl der einzigen Zeile, die nach dem Filtern übrig bleibt, wir können das sehen “97%” als Teil des gespeicherten Textes erforderlich.

img_5b333a6544350-3301356

Jetzt, Wir können diesen Text einfach mit der Standardfunktion von Power Query extrahieren “Text zwischen Trennzeichen”.

img_5b333aa881a66-8194883

Wir müssen lediglich die Start- und Endtrennzeichen angeben, wie im Folgenden gezeigt. Sehr leicht, Sie müssen keine eigenen Funktionen programmieren, Verwenden Sie einfach die Benutzeroberfläche, um zu helfen.

img_5b333ad21eeae-1984917

Dadurch wird eine neue Spalte mit dem gesuchten Wert hinzugefügt.

img_5b333b1d10c80-6195782

Daten für eine andere Schule abrufen

In der Theorie, wenn wir die URL mit einer anderen Schul-ID ändern, es sollte genauso funktionieren, weil der HTML-Text auf der Profilseite der anderen Schule eine ähnliche Struktur hat.
Klicke auf “Erweiterter Editor” und suchen Sie die URL mit der Identifikation der Schule im Sprachcode 'M'.

img_5b333b5b9f9b8-1393976

Um unsere Abfrage auf die Profilseite einer anderen Schule anzuwenden, Wir müssen nur die URL ändern.
Lass uns nehmen, zum Beispiel, Concord Öffentliche Schule. Ich habe die Abfrage geändert und jetzt ist die Abfrage zurückgegeben 69 (wie im Folgenden gezeigt), das ist das gleiche wie auf der Schulseite, Es klappt!

img_5b333b8102cd7-2558912

URL in Parameter umwandeln

Jetzt funktioniert es, Ich werde die URL in einen Parameter umwandeln, anstatt sie als String zu codieren. Es ist besser, einen Parameter zu erstellen, um ihn flexibler zu machen. Home Parameter verwalten Neue Parameter

img_5b333bf80ffc9-9295333

Füllen Sie die erforderlichen Felder aus (Parametername = URL, Text, Beliebiger Wert)

Ich benutze hier eine andere Schule (Öffentliche Schule Meadowbank https://www.myschool.edu.au/school/41257) um zu überprüfen, ob die Lösung unabhängig von der ausgewählten Schule funktioniert.

img_5b333c2286445-8444819

Jetzt habe ich URL als ParameterR, erforderlich Ändern Sie den Power Query-Code so, dass er auf einen Parameter statt auf eine fest codierte Zeichenfolge zeigt.

Dafür, Gehe zu den Einstellungen für den Quellschritt abfragen. Und wählen Sie Parameter aus der Dropdown-Liste.

img_5b333c57364ad-5835002

Erstellen Sie eine Funktion aus einer Abfrage

Der Grund, warum wir diese Aufgabe gestartet haben, ist der Vergleich von Schulen. Wir brauchen also Links für alle Schulprofilseiten.

Der effizienteste Weg, dies in Power Query zu tun, besteht darin, eine Funktion aus einer vorhandenen Abfrage zu erstellen. Im Power Query-Editor, Klicken Sie mit der rechten Maustaste auf die Abfrage und wählen Sie “Funktion erstellen”.

img_5b333cfd46dd5-3530866

Gib deiner Rolle einen Namen.

img_5b333d2124f68-1261930

Die Funktion repliziert den M-Code, der in der anfänglichen Abfrage verwendet wurde, aber füge eine Option hinzu, um sich selbst mit einer Parameter-URL aufzurufen. Beachten Sie, dass die ursprüngliche Abfrage noch vorhanden ist, plus eine neue Funktion.

img_5b333d4c10d41-7382756

URLs mehrerer Schulen abrufen

Die aktuelle Version der Website ermöglicht die Suche nach Schulen, zum Beispiel, nach Vorort oder Postleitzahl.

img_5b333d8542517-5320757

Während wir suchen, im Browser sehen wir eine URL, die Suchparameter enthält –
https://www.myschool.edu.au/school-search?FormPosted=True&SchoolSearchQuery=ryde&SchoolSector=G&SchoolType=P&State=NSW

Verwenden Sie die folgenden Parameter:
SchoolSearchQuery = ryde – zum Beispiel, Vororte rund um Ryde
Schulsektor = G – Regierung
Schultyp = P – Primär
Bundesland = NSW
Dann, Falls erforderlich, Diese Zeichenfolge kann mit einer Formel in Power Query generiert werden.
Auf die gleiche Weise wie oben für 'Daten von einer Schule beziehen' beschrieben, wir können diese Webseite von den Suchergebnissen aus konsultieren und nützliche Informationen aus dem Text extrahieren.

Zum Beispiel, Wir können alle Informationen auf der Suchergebnisseite anzeigen lassen, zusammen mit den URLs der Schulen, die wir als Parameter benötigen, wie im Folgenden gezeigt.

img_5b333e5005d5d-5957985

Die URL jeder Schule haben, wir können diese Tabelle mit Informationen von jeder Schulprofilseite erweitern, zum Beispiel, mit “% nicht englischsprachige Schüler” wie im Folgenden gezeigt, Aufruf der Funktion als Aggregatspalte.

img_5b333e7ae5be5-3079163

Das ist. Die Informationen zum Vergleich von Schulen sind jetzt verfügbar.

Sie können dieselbe Technik auf jede Website anwenden, auf der die Daten in einem nicht tabellarischen Format veröffentlicht werden.

Übungsübungen

Jetzt wissen Sie, wie Sie nicht tabellarische Daten aus dem Web abfragen, Versuchen Sie, die Wechselkurse auf den folgenden Seiten zu erhalten:

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

Eine einfache Möglichkeit, Daten über australische Schulen zu erhalten

Obwohl die Absicht dieses Beitrags darin besteht, zu demonstrieren, was mit Power Query möglich ist, falls Sie neugierig sind, mehr über australische Schulen zu erfahren, Es gibt eine einfachere Möglichkeit, Daten von Schulen abzurufen.
In der Fußzeile von https://www.myschool.edu.au Website finden Sie einen Link zu http://www.acara.edu.au/contact-us/acara-data-access wo alle Daten im Excel-Format vorliegen.

img_5b33405c3ebc9-7944837

Über den Autor

Ivan Bondarenko (auch bekannt als Ivan Bond) ist Spezialist für Berichte auf Basis von Excel und Power BI, vba-Entwickler, Open-Source-Autor SAP Business Objects Automatisierungstool Ja Excel-basierte Lösung zum Planen der Aktualisierung von Excel-Dateien (auch bekannt als Power-Refresh).

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.