Es melden sich immer mehr Blogs bei https://read.greatblogs.org/ an. Auch Foodblogs. Jetzt sind @kuechenlatein und ich da nicht mehr ganz so allein. đ
Es melden sich immer mehr Blogs bei https://read.greatblogs.org/ an. Auch Foodblogs. Jetzt sind @kuechenlatein und ich da nicht mehr ganz so allein. đ
GreatBlogs - ein Webcrawler entsteht
Im letzten Beitrag zu GreatBlogs ging es um die Resourcen-Optimierung der bereits bestehenden Software. Nachdem ein erster Nutzen des Projektes vorhanden ist, geht es ans Eingemachte. Um das eigentliche Suchthema. Dazu braucht es mehrere Dinge, eines davon ist ein Webcrawler, der nach Inhalten sucht. Grundlegende Idee Die Idee des Webcrawler ist, von einem Startpunkt ausgehend, ⊠âGreatBlogs â Ein Webcrawler entstehtâ weiterlesen
GreatBlogs â Ein Webcrawler entsteht
Im letzten Beitrag zu GreatBlogs ging es um die Resourcen-Optimierung der bereits bestehenden Software. Nachdem ein erster Nutzen des Projektes vorhanden ist, geht es ans Eingemachte. Um das eigentliche Suchthema. Dazu braucht es mehrere Dinge, eines davon ist ein Webcrawler, der nach Inhalten sucht.
Grundlegende Idee
Die Idee des Webcrawler ist, von einem Startpunkt ausgehend, neue Seiten bzw. Aktualisierungen zu finden. Diese wandern in einen Index und werden in weiterer Folge von einem anderen Prozess thematisch kategorisiert und mit einer Relevanz versehen.
Erste Iterationen und Learnings
Theoretisch ist ein Webcrawler eine einfache Sache. Aber wie immer in der Softwareentwicklung trifft Theorie auf Praxis und es gibt Themen, die unerwartet sind, aber auch solche, die bewusst auf spÀter verschoben werden.
Ich wÀhlte einen iterativen Ansatz mit dem Ziel, einen einfachen Crawler funktional zu haben und diesen in weiterer Folge kontinuierlich zu optimieren und um neue Features anzureichern.
Webcrawler v0.1.0
Wie auch das bisherige Backend, ist der Webcrawler mit Go geschrieben. Er gibt sich als gbbot zu erkennen. Ausgehend von einer Startdomain wird diese durchsucht und sowohl die einzelnen Seiten dieser Domain, als auch weitere Domains persistiert.
Im nĂ€chsten Schritt werden die neu gefundenen Domains durchsucht â nach demselben Verfahren.
Mit net/http und net/url bring Go alles mit, was man braucht.
Webcrawler v0.2.0
Bereits nach dem dritten Durchlauf gab es eine Unmenge an Domains, die natĂŒrlich mit dem Thema Blogs nichts mehr zu tun hat. Im Grunde finden sich alle Social Media-Plattformen und groĂen Tech-Buden in der Liste. Es muss also doch eine manuelle Freischaltung her.
Es werden zwar weiterhin alle gefundenen Domains gespeichert, allerdings mĂŒssen die zu crawlenden Domains manuell aktiviert werden. Das ist zwar aktuell Handarbeit, aber ohne eindeutige Erkennung, dass es sich hierbei um ein Blog handelt, gibt es keine andere Möglichkeit.
Der bisherige Nachteil: Das Parsen und Verfolgen ist nicht ganz billig.
Webcrawler v0.3.0
Um den gesamten Parsing-Prozess zu verbessern, wird nun zu Beginn ĂŒberprĂŒft, ob es eine sitemap.xml
gibt. Wenn ja, wird diese herangezogen. Sitemap-Index-Dateien werden genauso unterstĂŒtzt, wie Standard-Sitemap-Dateien.
In diesem Fall werden nur diese Seiten evaluiert und lediglich neue gefundene Domains mitgeschrieben, aber keinen weiteren Links gefolgt.
Das ist in Summe wesentlich performanter bzw. speichereffizienter, als sich alle gecrawlten Seiten zu merken und beim Durchsuchen des Trees zu prĂŒfen, ob der gefundene Link bereits ĂŒberprĂŒft wurde.
FĂŒr die Arbeit mit den Sitemap-Dateien setze ich auf gopher-parse-sitemap. Die Lib ist schon Ă€lter, aber die AbhĂ€ngigkeiten sind ĂŒberschaubar und am Sitemap-Standard hat sich nichts weiter geĂ€ndert, also kein Problem.
Learnings
Defensives Programmieren und so, ihr kennt das.
Aber das, was der Crawler da so findet, ist teilweise schon sehr grenzwertig. Auf jeden Fall muss er mit zahlreichen âEdge-Casesâ umgehen können:
Und da gibt es noch weitere FĂ€lle. Manchmal wĂŒrde ich tatsĂ€chlich gerne einige Domaininhaber*innen anschreiben und ihnen einen Liste von unsinnigen Links mitteilen â aber das ist eine völlig andere Geschichte.
Weitere Verbesserungen
NatĂŒrlich gibt es noch viel zu tun, denn der Webcrawler ist bei weitem noch nicht optimal. Das sind die Themen, die als nĂ€chstes anstehen.
Danach wird es in Richtung âThemen-Erkennungâ der BeitrĂ€ge gehen.
Bei Interesse also bitte gerne bei GreatBlogs vorbeischauen.
In GreatBlogs â Technik-Umschwung am Frontend habe ich schon Ănderungen an der Technologie-Auswahl angekĂŒndigt. Ein Teil dessen wurde mittlerweile auch umgesetzt. Schauen wir uns die Ănderungen im Detail an. Feed-Generierung Der Beitrags-Feed wurde im ersten Schritt mit Vue.js realisiert. Das ist nett, aber im Grunde ergibt das dann doch bei jedem Aufrung eine Query gegen ⊠âGreatBlogs â Ressourcen-Optimierung, RSS und Co.â weiterlesen
WÀhrend ich an #GreatBlogs arbeite, rippe ich gerade meine alten CDs - und erhöhe von MP3 auf FLAC.
GreatBlogs Update5 â Prototyp fĂŒr Suche
Eine Websuche besteht aus mehreren Bestandteilen. Einer davon ist ein WebCrawler, der nach neuen BeitrĂ€gen und Aktualisierungen sucht. HierfĂŒr habe ich bereits einen Prototypen vorliegen und möchte einige Erkenntnisse und weitere Schritte dokumentieren. [âŠ]GreatBlogs â Ressourcen-Optimierung, RSS und Co.
In GreatBlogs â Technik-Umschwung am Frontend habe ich schon Ănderungen an der Technologie-Auswahl angekĂŒndigt. Ein Teil dessen wurde mittlerweile auch umgesetzt. Schauen wir uns die Ănderungen im Detail an.
Feed-Generierung
Der Beitrags-Feed wurde im ersten Schritt mit Vue.js realisiert. Das ist nett, aber im Grunde ergibt das dann doch bei jedem Aufrung eine Query gegen die Datenbank. Nun ist es nicht so relevant, auf Sekundenbasis neue BeitrÀge tatsÀchlich auch zu listen. Die Entscheidung, den Feed-Reader zu generieren und statisch auszuliefern, war daher sehr einfach.
Go bietet eine Templating-Engine an, die fĂŒr diese Zwecke perfekt ist. Also habe ich Templates und Styles entworfen und per Go hole ich die relevanten Daten, jage sie durch die Templating-Engine und fertig ist das Ergebnis.
Da ohnehin alle 30 Minuten per Cronjob die registrierten Feeds aktualisiert wird, wird im Zuge dessen auch die Feed-Seite im Anschluss neu generiert.
Blogger Auflistung
In dieselbe Kerbe schlĂ€gt die neue Blogger-Auflistung. Diese zeigt alle registrierten Blogs an. Da sich diese noch seltener Ă€ndert, reicht eine Aktualisierung einmal am Tag. Auch dies wird ĂŒber einen Cronjob durchgefĂŒhrt.
RSS-Feeds
Wie im Screenshot oben zu sehen ist, werden mittlerweile auch RSS-Feeds angeboten. HierfĂŒr gibt es eine praktische Go-Bibliothek: Gorilla Feeds.
Mit dieser Bibliothek können Atam bzw. RSS 2.0 Feeds sehr einfach erzeugt werden. Die Einbindung von Feeds ist damit ein Kinderspiel.
Hilfsmittel
Es gibt ja neben der technischen Aspekte weitere Themen zu bedienen: Usability, Accessability, Performance und natĂŒrlich auch IT-Themen. Das Einrichten und Konfigurieren von Cronjobs oder des Webservers zum Beispiel. Hier ein paar Links zu hilfreichen Webseiten:
Es tut sich was bei GreatBlogs. Ich hatte ja im Beitrag GreatBlogs â Projekt und Technik geschrieben, dass ich groĂteils einen neuen Dev-Stack einsetze. Wie das dann so ist, kann sich sehr schnell etwas daran Ă€ndern und das wird es auch. Den Grund und noch weitere Themen gibt es in diesem Beitrag. Statische Seiten brauchen ⊠âGreatBlogs â Technik-Umschwung am Frontendâ weiterlesen
GreatBlogs Update4 â RSS Feeds, Blogauflistung
Die vergangenen Abende waren wieder gut gefĂŒllt. Einige Arbeiten an GreatBlogs wollten durchgefĂŒhrt werden. Was ist denn nun alles neu? [âŠ]https://c0d1.eu/greatblogs-update4-rss-feeds-blogauflistung/
Die vergangenen Abende waren wieder gut gefĂŒllt. Einige Arbeiten an GreatBlogs wollten durchgefĂŒhrt werden. Was ist denn nun alles neu? Update Einstiegsseite Nichts GroĂes, aber die allgemeine Einstiegsseite hat eine Anpassung erhalten: RSS/Atom-Feeds Read Great Blogs bietet nun
BeschÀftigt sich die BlogosphÀre zu sehr mit sich selbst?
Erik von Blogissimo stellte sich die Frage BeschĂ€ftigt sich die BlogosphĂ€re zu viel mit sich selbst. Eine gute und wichtige Frage. Er beantwortet sie mit Ja. Da ich auch direkt angesprochen wurde, möchte ich nun auch - nach ein paar Tagen des Reflektierens - meinen Senf dazu geben. [âŠ]https://c0d1.eu/beschaeftigt-sich-die-blogosphaere-zu-sehr-mit-sich-selbst/
Erik von Blogissimo stellte sich die Frage BeschÀftigt sich die BlogosphÀre zu viel mit sich selbst. Eine gute und wichtige Frage. Er beantwortet sie mit Ja. Da ich auch direkt angesprochen wurde, möchte ich nun auch - nach ein paar Tagen des Reflektierens - meinen Senf dazu geben. Eriks Basi
GreatBlogs Update3 â Neue Feedanzeige im Test
Es tut sich etwas. Der in Update1 eingefĂŒhrte Feed wurde durch einen neuen ersetzt. [âŠ]https://c0d1.eu/greatblogs-update3-neue-feedanzeige-im-test/
Es tut sich etwas. Der in Update1 eingefĂŒhrte Feed wurde durch einen neuen ersetzt. Unter read.greatblogs.org findest du den neuen Feed aller beteiligten Blogs. Vorerst werden nur BeitrĂ€ge der vergangenen 24 Stunden angezeigt. Das wird sich aber sehr bald Ă€ndern und es werden mehr angezeigt.