DE  |  FR

Webscraping

[21-01-2022] Wie kann Webscraping die separate Übernahme einzelner Inhalte von Websites unterstützen?

Bei der Archivierung einer Website [1] kann es aus Sicht des Archives gerechtfertigt sein, gewisse Inhalte einzeln zu erfassen und den Nutzern zugänglich zu machen. Bei analogen Inhalten steigt der personelle Aufwand mit der Erfassungs- und Erschliessungstiefe stark an. Bei digitalen Inhalten wie Websites kann dies dank automatisierter, digitaler Erfassungsprozesse potenziell vermieden werden.

Webscraping
Webscraping beschreibt den Prozess, in automatisierter Weise Daten und Inhalte von Websites zu extrahieren. Webharvesting wird oft als Synonym für Webscraping verwendet. Webscraping gewann mit dem Aufkommen von Big Data in E-Commerce und E-Advertising grosse Bedeutung, was sich in einer breiten Palette verfügbarer Tools widerspiegelt. In Bibliotheken und Archiven wurde es jedoch bislang nur vereinzelt angewendet, zum Beispiel im 2013 abgeschlossenen EU-Projekt BlogForever [2] oder im Projekt Web Scraping Toolkit der Bibliothek der Brown University[3].

Webscraping-Tools
Für Webscraper gibt es einerseits Tools für häufige Anwendungsfälle aus dem Bereich E-Commerce. Andererseits können Webscraper bedürfnisgerecht auch mit Toolkits erstellt werden. Nachfolgend werden einige bekannte Lösungen vorgestellt.

Tools
Tools verfügen über eine visuelle UI mit vordefinierten Interaktionsmöglichkeiten. Zu scrapende Inhalte können meist frei zusammengestellt werden. So können z.B. Titel und Inhalt eines Artikels separat selektiert und anschliessend als beschreibendes und als inhaltliches Element eines Datenpaketes extrahiert werden.

  • Portia[4] basiert auf Scrapy und verfügt über eine visuelle UI. Portia ist frei nutzbar, wird aber seit August 2018 nicht mehr weiterentwickelt. Kommerzielles Nachfolgeprodukt von Portia ist ZYTE[5] (ehemals ScrapingHub). Portia hat sich bei Tests durch die KOST im Falle von multipler Selektion von Inhalten über mehrere Ebenen als schwer- und fehleranfällig erwiesen.
  • ParseHub[6] bietet eine freie und eine bezahlte Version an. Die freie Version erlaubt Inhalte von einer Website über maximal 200 pages zu extrahieren. Die Extraktion von reinem Text in json-files funktioniert mit der freien Version langsam (200 pages in 40 Minuten) aber einwandfrei.
  • Web Scraper [7a, 7b] ist ein freier Add-On-Scraper für Chrome und Firefox. Web Scraper arbeitet eher langsam (1440 pages pro Stunde, 2.5 Sekunden pro page). Er kann aber multiple Selektionen pro page bewältigen und ist in weder bezüglich Websitetiefe noch Anzahl pages pro Site beschränkt. Jedes extrahierte Element wird als Zeile einer .xls-Datei hinzugefügt. Web Scraper zeichnet sich dadurch aus, dass auf einfache Weise auch die .html-Struktur inklusive Inhalten extrahiert werden kann. Neben Web Scraper wurden auch andere Add-On-Scraper betrachtet, die jedoch nicht im selben Masse zu überzeugen vermochten.
  •  

    Frameworks, Programmbibliotheken, Toolkits
    Der Scraper wird durch den Anwender mit einem Toolkit o.ä. erstellt.
    Die Toolkits sind open source/nicht kommerziell. Verbreitet sind unter anderem:

  • Scrapy [8] Ein Webcrawling Framework,
                      geschrieben in Python
     
  • BeautifulSoup [9],eine Pythonbibliothek,
                      Beispiele unter [10]
     
  • Selenium [11], eine Pythonbibliothek
     
  • Wget [12], Curl, Kommandozeilenprogramme
                      zum scrapen von Dateien.
  •  

    Web Scraper: einfach und vielfältig
    Aufgrund der erwähnten Vorteile von Web Scraper wird in der Folge illustriert, wie ein Webscraping auf dem Web Scraper-Add-On umgesetzt wird und welche Vorteile der Web Scraper aufweist.

    Zugang_zu_Webscraper.png

    Strukturbaum des Web Scraper
    Ausgehend von einer Startseite (root) kann sich der Benutzer im Web Scraper durch das Anwählen von Links in tiefere Ebenen einer Website vorarbeiten. Hierbei können 

    auch ganze Gruppen von Links angewählt werden wie auch paginierte Links. Wird mit einem Link der Gruppe weitergearbeitet, so gelten dessen Scraping-Regeln auch für alle anderen Links der Gruppe. Am Ende des Strukturbaumes steht der zu scrapende Inhalt.

    Der Strukturbaum kann in Web Scraper visualisiert werden. Der Baum ist in json hinterlegt. Das json-File kann manuell abgeändert werden und wiederverwendet werden.

    Struktur_Web_Scraper.png
    Sitemap_JSON.png

     

    Der zu scrapende Content besteht aus HTML-Elementen. Diese werden einzeln angewählt und ergeben in ihrer Gesamtheit ein Datenelement. So können separat Metadaten (z.B. Autor, Titel) als auch zugehörige Inhalte (z.B. Artikel) gescraped werden. Als Inhalt ist auch die gesamte HTML-Struktur extrahierbar. Somit lässt sich die Repräsentation z.B. von Artikeln auf einer Webseite ebenfalls archivieren.

    Slapstickbild.png
    Scrapen_Slapstick.png

     

    Über das Sitemapmenu wird das scraping ausgeführt. Nach dem scraping steht ein XLS-File zur Verfügung. Jedes Datenelement nimmt hierbei eine Zeile ein.

    Excel_gescraped.png

    Mit geeigneten Tools lassen sich die Datenelemente im XLS einzeln archivieren und den Benutzern über einen HTML-Viewer zugänglich machen.

    html_gescraped.png

    Ein besonderes Augenmerk bei der archivischen Verwendung von gescrapten Inhalten verdienen tote Links, die mit der Zeit auftreten werden[13]. Wenn ein gescrapter Inhalt aufgrund eines toten Links ein Bild nicht mehr aufrufen und darstellen kann, und dieses Bild für das Verständnis des Inhaltes notwendig ist, so ist dies aus archivischer Sicht problematisch. Wie dieses Problem gelöst werden kann, ist noch offen.

    Beispiel eines toten Bildlinks:
    https://www.nzz.ch/bilder/dossiers/2001/afghanistan/afghanistan_indexbild.gif

    Fazit
    Aktuell wird Webscraping in Archiven kaum verwendet, entsprechende Erfahrungen sind deshalb rar. Die Tests der KOST mit den Webscrapern Portia, ParseHub und Web Scraper zeigten auf, dass nur Web Scraper sowohl bezüglich Bedienfreundlichkeit als auch Funktionalitätsbreite zu überzeugen vermag.

    Falls sich künftig herausstellen sollte, dass für archivisches Webscraping ein Tool wie Web Scraper nicht mehr genügt, so ist ein Projekt ins Auge zu fassen, welches die erkannten Lücken füllt. Hierbei kann auf die vom «Web Scraping Toolkit»[14] -Projekt geschaffene Wissensbasis zurückgegriffen werden.