JavaScript: Überschrift/Titel eines Artikels abrufen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
Wie kann ich das am besten mit JavaScript umsetzen?

Wenn du eine Webseite aufrufst (Request) erhältst du im Erfolgsfall ein Datenpaket (Response) zurück, welches das gesamte HTML-Dokument enthält.

Nun hast du bei einem in einer Webseite eingebetteten JavaScript-Programm allerdings das Problem, dass es in seinen Rechten eingeschränkt ist. So kannst du bspw. nicht ohne Weiteres eine fremde Domain via fetch kontaktieren. Die CORS-Policy blockiert so einen Kontaktversuch in der Regel.

Wenn du also mit JavaScript arbeiten möchtest, dann muss das Programm außerhalb des Browsers laufen (die nächstbeste Option wäre ein Programm auf dem Webserver) oder du schreibst dir ein Browserplugin (mit Tampermonkey). Schau dir für erstgenannte Lösung Node.js an. Zum Versenden/Empfangen von Daten kannst du bspw. das node-fetch-Modul verwenden.

import fetch from "node-fetch";

const response = await fetch("some URL ...");
const html = await response.text();

Sobald du das HTML-Dokument hast, kannst du es parsen, um den Wert zu ermitteln, den du suchst. Das jsdom-Modul kann dabei gut helfen. Bei einem Browserplugin würde ich wohl auf jQuery zurückgreifen.

Ab und an gibt es allerdings auch Fälle, wo die erwarteten Daten noch nicht im HTML stehen, welches beim Response zurückgeliefert wird, da sie erst dynamisch gebaut / nachgeladen werden. In diesen Fällen könntest du auf Lösungen zurückgreifen, die einen (Headless) Browser automatisieren (z.B. Cypress, Puppeteer oder Selenium).

Was muss ich (...) "wissen"?
  1. Du musst wissen, wie du mit den oben genannten Tools umgehen kannst. Dabei hilft deren Dokumentation.
  2. Englisch-Kenntnisse für das Lesen der Dokumentationen wäre von Vorteil.
  3. Du musst die Struktur des Dokuments kennen, aus welchem du Daten herauslesen möchtest. Das Konzept des DOM sollte dir dabei nicht unbekannt sein.
Wie sieht die Rechtslage aus. Ist solch eine Abfrage überhaupt erlaubt?

Vorweg: Für wirklich retchtssichere Antworten zu diesem Thema ist es im Zweifel besser, persönlich einen Anwalt zu konsultieren. Im Juraforum erhält man gewiss ebenso gute Antworten.

Zur Abfrage: Bei einer privaten Nutzung der Daten sehe ich vorerst kein Problem. Wenn du sie weiterverwenden möchtest, müsstest du darauf achten, dass du Informationen womöglich zitierst. Interessant an dieser Stelle ist auch dieser Artikel.

Des Weiteren gehe ich davon aus, dass du je Seite nur sehr wenige Abfragen pro Stunde benötigst. Das heißt, du verursachst keine explizite Auslastung beim Zielserver. Würdest du die Webseite mit den zu lesenden Daten hingegen dauerhaft mit etlichen Anfragen je Millisekunde befeuern, dürfte das als Angriff gewertet werden.

Wozu ich aber noch raten würde: Schau bei speziellen Daten (klassisches Beispiel: Wetterdaten) erst, ob die Quelle dafür auch eine API bereitstellt. Wenn ja, nutze diese. In diesem Fall weiterhin Webscraping in Erwägung zu ziehen, wäre so, als würdest du durch die Katzenklappe der Hintertür eines fremden Hauses kriechen, statt höflich vorn anzuklopfen.

BenIEbelt 
Fragesteller
 02.05.2022, 21:22

Hallo,

erst mal vielen herzlichen Dank für diese super Erklärung =), leider hat Corona uns Zuhause etwas zu schaffen gemacht. Daher die späte Antwort.

Hab mir alles genau angeschaut. Anfangs war ich etwas erschrocken, aber nach ein zwei docs merkte ich dass es mit nodejs ziemlich einfach sein kann.

Die Rechtslage beim Scraping ist mir etwas zu schwammig wenn ich ehrlich bin. Daher werde ich meinen Fokus eher auf die API´s legen. Da bekomm ich ja "meistens", wie von ihnen erwähnt, genau dass was ich suche... ganz legal mit eigenem Key.

Für meine mini Projekte, die nach Fertigstellung und ein zwei Tests meistens nicht mehr verwendet werden perfekt.. danke nochmal für den Hinweis. =)

Die Abfragen sollen auch nicht automatisch sondern durch eine click oder ähnliche Funktion ausgelöst werden. Wenn ich die App öffne, morgens oder mal Abends, und dann einen Button drücke.. ein Stichwort eingebe oder sowas in der Art.. erst dann soll die Abfrage erfolgen, somit dürfte die Anzahl an req kein Thema sein.

Ich sage nochmal DANKE ! Hatte eine menge Spass mit dem was ich dazugelernt hab =)

PS

Tampermonkey, oder ähnliches hab ich nicht ausprobiert. Wenn ich die Berechtigungen sehe die diese Erweiterungen verlangen, stellen sich mir die Nackenhaare :D . .(mir ist bewusst dass es evtl an der Stelle unberechtigt ist... aber sind wir nicht alle ein bisschen Bluna =)

0