Krautkanal.com

Veröffentlicht am 2014-11-26 17:05:54 in /prog/

/prog/ 6112: Hallo Berundo San, mal ein kleines Quest für dich....

langate Avatar
langate:#6112

Hallo Berundo San, mal ein kleines Quest für dich.

Bernd möchte von verschiedenen Websites content auf seinem Server spiegeln. Dabei soll aber nicht die ganze Website gespiegelt werden, sondern nur definierte Rubriken, und da auch nur neu hinzugefügte Inhalte. Bernd stellt sich da einen Crawler vor, der neue Inhalte, also Text und ein definiertes Bild, abgreift und in eine Datenbank schreibt (das Bild natürlich als File). Diese Inhalte sollen dann formatiert und über einen String eingebunden werden, so dass sie möglichst automatisiert und mit Quellenangabe in einem eigenen CMS verwendbar sind.
Ich hoffe du verstehst in etwa was ich meine, krautkanal.com tut sowas ähnliches mit KC.

Unter welcher Sprache würde Bernd sowas realisieren? Oder gibt es bereits etwas ähnliches, wessen sich dieser Bernd bedienen könnte?

Bild verwandt und Danke.

a_harris88 Avatar
a_harris88:#6113

Schau dir mal wget an, vielleicht ist das schon was du suchst.

Ansonsten: Würde das Ding entweder in C#/C++ oder Java schreiben, was dir eher liegt. Warum? Weil sich für diese Sprachen leicht Ressourcen/Bibliotheken lassen, mit denen man sich das Leben leichter macht. Python wäre auch eine Möglichkeit.

mandalareopens Avatar
mandalareopens:#6114

>>6113
PS: wget kann nicht hochladen, dafür aber cURL. Schau dir am besten mal beide an.

stuartlcrawford Avatar
stuartlcrawford:#6116

Kannst dir mal scrapy ansehen. Am Ende hängt es aber eh davon ab, ob die Seiten dir die Inhalte einfach anbieten oder gar eine API anbieten oder ob sie versuchen genau sowas zu verhindern.

devankoshal Avatar
devankoshal:#6117

Jetty (dem Buchstaben nach in Java aber Java stinkt und ich empfehle es nicht) benutze ich gerade für ähnliches.
Das Holen ist aber dein geringstes Problem und wird kaum komplizierter als das Zusammenstellen einer schönen URL. Viel kniffliger ist die Frage, wie du die Daten aus dem Quelltext ausliest und wie du sie organisierst.

Es gibt z.B. Bibliotheken die html(dom)(firebug zeigt das sehr schön an) interpretieren können. Bei komplizierten Sachen ist das u.U. besser als etwa den Text der Seite eimfach an Marken zu erbrechen.
Vielleicht kannst du dir auch Arbeit ersparen, wenn deine Quelle irgendwo ajax/json nutzt, wofür es auch Bibliotheken gibt.

SQL zu lernen wäre sicher auch hilfreich (oder nötig) um die Datenbank anständig zu bauen. Bei nur einem schreibenden Prozess reicht SQLite aber wenn z.B. dein CMS irgendwas dazu notieren soll, brauchst du PG- oder MyLoliMariaSQLDB. (Bild verwandt, es ist die Tochter des Führungsentwicklers, nach der die Datenbank benannt wurde.)

Da so ziemlich alle Sprachen Bibliotheken für Runterladen, Parsieren und SQL-Fragen mitbringen, ist es reine Geschmackssache, welche du nutzt.

emileboudeling Avatar
emileboudeling:#6118

>>6113
>wget

Stimmt, wget liegt vor meiner nase. Hab mich nie näher damit beschäftigt, aber cronjob sollte reichen. Hochzuladen braucht es nichts, passiert ja sowieso alles lokal auf dem Server.

>>6117

Ich überlege auf eine Datenbank ganz zu verzichten, die Formatierung des abgegriffen Contents Java (was ich eh gerade lerne) zurechtschwurbeln und als .txt schreiben zu lassen, was man dann einbinden könnte. Das wäre dann nicht gerade trivial für mich und jeweils Mundgeblasen, aber wat willste machen.

Gute Denkansätze idF, Danke.

splashing75 Avatar
splashing75:#6120

Python, weil es Scrapy hat.
Und wenn du nur mal eben einen quick&dirty-Scraper brauchst, definitiv Python wegen Portia:
https://github.com/scrapinghub/portia
Etwas arkan zu bedienen noch, aber läuft.

Neuste Fäden in diesem Brett: