Business Intelligence für das Pharma Marketing

von

Übersicht

Für einen Kunden aus dem Pharmasektor haben wir analysiert, wie Web Scraping Technologie eingesetzten werden kann, um den Kunden bei Marktuntersuchungen zu unterstützen und Geschäftsprozesse im Bereich Vertragsmanagement zu automatisieren.

Problemstellung

Im Wesentlichen haben sich die folgenden Fragestellungen ergeben:

  • Wie kann das Produktmanagement des Kunden unterstützt werden bei der Analyse von Preisen, Angeboten und Rabatten, Lieferfähigkeit und Positionierung von Produkten in Online-Shops?
  • Wie kann das Vertragsmanagement des Kunden automatisiert kontrollieren, ob vertraglich festgelegte Regeln bezüglich der Präsentation von Produkten des Kunden in Online-Shops von dessen Vertragspartnern eingehalten werden?

Indirekt beinhalten diese Fragen auch die Problematik der Zugänglichkeit der Web Scraping Technologie. Immerhin müssen dafür Crawler erstellt und anschließend deployed werden. Das ist üblicherweise keine Aufgabe, der vom Produkt- oder Vertragsmanagement vorgenommen wird. Als dritte Fragestellung ergibt sich also:

  • Wie kann das Produkt- oder Vertragsmanagement des Kunden in die Lage versetzt werden, relativ einfach, aber trotzdem dynamisch, die zu erfassenden Daten vorzugeben?

Lösungsansatz

Im Rahmen einer Voruntersuchung sollte das Web Scraping Framework Scrapy [1] dahingehend untersucht werden, ob es sich für den beabsichtigten Einsatzzweck eignet. Das Framework ist eng mit der Cloud-Plattform Scrapinghub [2] verbunden, welche mit Scrapy Cloud eine SAAS Lösung für das Framework anbietet.

Die Verwendung der SAAS Lösung empfiehlt sich, da man sich damit die Konfiguration und Wartung einer Scrapy Umgebung sparen kann. Auf die Scrapy Cloud kann man entweder per Webbrowser oder bequem per API zugreifen. Die Entwicklung von Web Crawlern mit dem Framework erfolgt in der Programmiersprache Python und ist sehr einfach. Solche im Scrapy-Umfeld Spider genannten Programme können modular aufgebaut sein, so daß sich Teil eines Crawlers mehrfach verwenden lassen.

Der Einsatz der Scrapy Cloud hat zwei weitere Vorteile:

  • Specherung der erfassten Daten
  • Parallelisierung der Erfassung zur Erhöhung der Geschwindigkeit der Erfassung

Je nach Umfang des SAAS Plans können mehrere Crawler gleichzeitig gestartet werden. In Abhängigkeit des geplanten Einsatzzwecks ist es also möglich, viele Crawler mit kleinen Aufgaben gleichzeitig zu starten oder wenige Crawler, die dafür umfangreichere Arbeit leisten. Generell sollte die enstehende Last bei der zu erfassenden Seite berücksichtigt und die ggf. vorhandene robots.txt respektiert werden.

Crawlern, die in der Scrapy Cloud laufen, steht der dortige Speicher direkt zur Verfügung. Dabei werden die zu erfassenden Daten in einem sogenannten Item beschrieben. Items können im Scrapy Framework eine Pipeline durchlaufen, an deren Ende die Speicherung in der Scrapy Cloud erfolgt. Auf ein Item kann beim Erfassen mehrere Pipelines angewendet werden. Pipelines können erfasste Daten validieren, wiederverwenden, verändern, uvm. Auf gespeicherte Items kann man entweder mittels Webbrowser oder per API zugreifen. Die API erlaubt Filter, so daß man gezielt bestimmte Items abrufen kann.

Bei den ersten Versuchen mit Crawlern in der Scrapy Cloud zeigte sich schnell, dass manche Online-Shops eine Sperre für Scrapinghub eingerichtet haben. Die eingerichteten Crawler waren dann nicht in der Lage, Daten von diesen Shops zu erfassen. Um solche Sperren zu umgehen, aber auch um die Zuverlässigkeit zu erhöhen und mögliche Täuschmanöver zu umgehen, bietet es sich an, einen Proxy-Dienst zwischenzuschalten. Im Umfeld von Scrapinghub gibt es dafür den Service Crawlera [3], der ein sehr umfangreiches und weltweit verteiltes Netzwerk von Servern zur Verfügung stellt, die von den Crawlern verwendet werden können. Die Einbindung von Crawlera in ein Projekt bei Scrapinghub ist sehr leicht, denn der Service wird einfach als Middleware in den Projekteinstellungen definiert.

Umsetzung

Unter anderem bestand die Anforderung der einfachen Anpassbarkeit der Lösung durch das Produkt- oder Verwaltungsmanagement des Kunden. Dies wurde durch einen Controller umgesetzt, der als Service auf einem Server eingerichtet wurde. Der Controller übernimmt dabei die Aufgaben:

  • Auslesen der vom Kunden vorgegebenen Parameter (z.B. zu überprüfende Produktnamen, Kategorien, etc.)
  • Anstoßen der Crawler mit den ausgelesenen Parametern
  • Herunterladen der erfassten Daten
  • Aufarbeiten der erfassten Daten und
  • Ablegen der aufbereiteten Daten im Data-Warehouse

Fazit

Die Voruntersuchung hat gezeigt, dass das ausgewählte Framework Scrapy sehr gut für den geplanten Einsatzzweck geeignet ist. Cralwer lassen sich damit sehr schnell und einfach erstellen und in Produktion bringen. Die Cloud-Plattform Scrapinghub ist dabei sehr hilfreich. Der Service Crawlera läßt sich einfach integrieren und stellt zuverlässige Crawls sicher. Durch den entwickelten Controller ist es gelungen, Vorgabeparameter für den Kunden leicht anpassbar zu machen.

Die Untersuchung hat aber auch gezeigt, dass die Crawler bei Analysen über einen längeren Zeitraum immer wieder an aktuelle Bedürfnisse und Änderungen seitens der Online-Shops angepaßt werden müssen. So muss zumindest ein Monitoring der erfassten Daten eingerichtet werden, um bei Problemen entsprechend zügig reagieren zu können.

Wenn die Erfassung der Daten problemlos funktioniert, dann kann das hier vorgestellte Szenario eine große Hilfe für das Produkt- oder Vertragsmanagement sein. Bei unserer Beispiel-Untersuchung haben wir spannende Einblicke darüber erzielt, welche Online-Shops bestimmte Erkältungspräparate bevorzugen!

Kategorien: Business IntelligenceIT-ConsultingOpen-SourcePharmaPython

Zurück