News

SAS Toolbox

Webscraping mit PROC PYTHON

​Die Aufgabe

​Viele nützliche Informationen sind heutzutage per Browser verfügbar. Oft lassen sie sich aber nicht ohne weiteres über ein API abfragen. ​Wie können also online verfügbare Tabellen aus Websiten ausgelesen und anschließend als SAS Dataset zur weiteren Verarbeitung bereitgestellt werden? Im Folgenden wird das Vorgehen anhand der Seite https://communities.sas.com/ dargestellt. Es soll die Tabelle der neuesten Beiträge eingelesen werden.

Die Herausforderungen

SAS ist für die gestellte Aufgabe aus verschiedenen Gründen nicht das passende Tool:

  • SAS verfügt über keinen HTML Parser. HTML muss händisch in einem Datastep als Text verarbeitet werden.
  • SAS Textfelder können maximal 32.767 Zeichen enthalten. Dies ist nicht immer ausreichend.
  • SAS Code wird schnell umfangreich und damit unübersichtlich. Er lässt sich häufig nicht einfach wiederverwenden.

 

Die Lösung

SAS bietet in den aktuellen Versionen die Möglichkeit über PROC PYTHON auch Python Code auszuführen.

Für Python existieren eine Vielzahl an hochqualitativen Open-Source Paketen, die auch für das Webscraping eingesetzt werden können. Dazu werden häufig folgende Pakete genutzt:

  •  requests für http-Abfragen
  • BeautifulSoup für die Verarbeitung von HTML-Quelltext
  • pandas für das Arbeiten mit tabellarischen Daten

 

Architekturskizze
Um nun die Tabellen in SAS Datasets zu überführen sind folgende Schritte notwendig:

SAS Toolbox: Datasets Architekturskizze

 

Vorbereitung und Analyse
Die Entwickler-Tools im Browser enthüllen, dass sich die Tabelle u.a. über die Klasse lia-list-wide identifizieren lässt. Der Code wird in einem Docker Container mit SAS Analytics Pro entwickelt. Die genannten Python Packages sollten vorab installiert werden.

 

SAS Toolbox: Docker Container SAS Analytics Pro

Implementierung

Das fertige SAS Programm besteht aus nur wenigen Zeilen Python-Code und das SAS Dataset enthält alle Informationen aus der Webseite.

SAS Toolbox: Code PROC PYTHON

SAS Toolbox: Dataset

 

Optimierung

Wie mächtig Python ist, zeigt sich in der Optimierungsphase. Das Pandas Package bringt eigene Funktionen für das Webscraping mit. Die anderen Packages werden daher nicht benötigt und das Beispiel kann somit noch weiter verkürzt werden, ohne an Funktionalität zu verlieren:

SAS Toolbox: Code PYTHON

 

Werden Sie SAS-Experte bei HMS!

 

Offene Stellen ansehen

 

SAS Toolbox: Webscraping PROC PYTHON

  zurück