Crawler Complete

So der Crawler ist nun offiziell fertig gestellt. Die im letzten erwähnten Knacknüsse konnten überwunden werden. Jedoch führte dies zum kompletten Umbau des Crawlers. Ich habe jedoch durch das einiges lernen können und möchte in diesem die Überwindung dieser Hindernisse und die Architektur der News-Seite näher bringen.

Anatomie einer News-Seite

Newsseiten sind notorisch für unnötige Inhalte welche geladen werden und sind relativ “schwer“ für eine Webseite. Ein Artikel hat eine Grösse von ca. 900kb. Ganz schön heftig für ein bisschen HTML. Obwohl Speicher immer billiger wird habe ich keine lust meinen mit Werbung und Tracking-Scripts vollzumüllen. Ein weiterer Grund, weshalb ich nicht die komplette HTML-Seite speichern möchte liegt an der Anatomie der Seite selber. Wie im letzten Blogpost erwähnt, ist noch kein RSS feed implementiert. Deshalb suchte ich nach Möglichkeiten, die Artikel möglichst bei erscheinen abzugreiffen. Wie sich bei näheren Betrachtung des Quellcodes zeigte gibt es praktischerweise bei jedem Artikel einen Script-Tag hat, in welchem diverse Metadaten und sogar der Text selber im praktischen JSON Format aufweist - Jackpot!

         "category":{
            "type":"category",
            "name":"Front",
            "categoryId":1,
            "categoryType":"default",
            "allowRobots":true,
            "pageStyle":"default",
            "feed":"https://feed-prod.unitycms.io/6/category/1",
            "metaTitle":"20 Minuten: Aktuelle News \u0026 Schlagzeilen aus der Schweiz und International",
            "metaDescription":"20 Minuten bietet dir 24/7 aktuelle Nachrichten, Ereignisse, Bilder, Hintergrundstorys und Videos aus der Schweiz und der Welt.",
            "urlPath":"front",
            "fullUrlPath":"front",
            "paywall":
               
            

Ausschnitt aus dem JSON eines Artikels

Nicht nur gibt es in diesem JSON einen Content-Link, in welchem der Artikel als reines JSON hinterlegt ist, ideal, da dies die Arbeit für mich massiv einfacher macht. Und, was mit auch ein Grund war, weshalb ich nicht die gesammte HTML-Seite speichern will, gibt es einen Category-Link mit einem JSON von allen Artikeln, welche in dieser Kategorie leben. Diese Seiten scheinen wie RSS zu funktionieren, nur neu im JSON-Format und nicht wie bis anhin im XML-Format.

Welche Kategorien gibt es?

Kurzgesagt: Viele. Um herauszufinden welche Kategorien ich abhören sollte auf Updates, starte ich einen Crawl welcher jeweils die Kategorienummer erhöhte und schaute, ob ein HTML 200 Status zurückkam, welchen ich dann kurz mit dem Namen der Kategorie ausgab. Bei 400 habe ich aufgehört, es gab auf jeden Fall zu viele und es schien mir nicht Sinnvoll, all diese regelmässig abzufragen. Deshalb entschied ich mich neben “Front“ auch die gängigsten resorts abzufragen wie etwa Innland, Ausland, Sport etc. Aber auch aus aktuellem Anlass die Kategorie Corona-Virus.

Aus interesse habe ich auch nachgeschaut, welche “Tenants“ neben der von mir untersuchten News-Seite sonst noch dieses CDN nutzen. Anbei eine Liste mit den gefunden Unternehmen:

1: Der Bund, 2: Tages Anzeiger, 3: BZ Berner Zeitung, 5: Basler Zeitung, 6: 20 Minuten, 7: 20 Minutes, 8: Berner Oberländer, 9: Thuner Tagblatt, 10: Langthaler Tagblatt, 11: Zürichsee-Zeitung, 12: Der Landbote, 13: Zürcher Unterländer, 14: Tribune de Genève, 15: 24 heures

Cool, cool, cool.mp3

Im nächsten Blogartikel werde ich näher auf die Architektur des Crawlers eingehen.

Previous
Previous

Anatomie eines Crawlers

Next
Next

Die Knacknuss