Wie kann ich eine bestehende html Tabelle gezielt auslesen?
Hallo, folgender Sachverhalt:
Auf einer Internetseite (A) ist eine html Tabelle, welche sich täglich ändert.
Ich möchte auf meiner Internetseite (B) eine gezielte Abfrage auf diese Tabelle erstellen.
Ein Beispiel:
Auf der Ausgangsseite (A) ist eine html Tabelle mit Name, Alter, Wohnort und Postleitzahl. Auf meiner Seite (B) soll ein Eingabefeld sein, indem der Nutzer gezielt einen Nahmen eingeben kann und dann Alter, Wohnort und Postleitzahl aller Einträge mit diesem namen angezeigt bekommt.
Im Optimalfall wird die Eingabe gespeichert und der Nutzer wird nur benachrichtigt, wenn sich Einträge für seinen Namen geändert haben.
Mit welchem Ansatz würdet ihr dieses Problem lösen?
html, Javascript, SQL, php, welche Systeme werden benötigt?
3 Antworten
Das heißt, die Webseite A gehört dir nicht / du hast keinerlei Zugriff auf deren Datenbank?
Das Verfahren, welches dann eingesetzt werden kann, nennt sich Webscraping. Hierzu kannst du jegliche Programmiersprache nehmen, die möglichst bereits Funktionalitäten (über die Standardbibliothek oder externe Bibliotheken) anbietet, um HTTP Requests zu verschicken und den dazugehörigen Response zu empfangen.
Das heißt, es gibt Optionen wie diese:
- Java mit der HttpUrlConnection-Klasse
- PHP mit cURL
- C# mit der WebRequest-Klasse (für das Parsen eignet sich das HtmlAgility-Pack sehr gut)
- JavaScript mit jQuery und AJAX
- JavaScript auf nodeJS-Basis
- usw.
Der Response muss danach geparst werden - z.B. könntest du die Daten zuvor durch einen XmlParser laufen lassen, um so einfacher an die benötigten Informationen zu gelangen. Da sich die Daten täglich ändern, solltest du mindestens einmal alle 24h deinen Crawler neue Daten heranholen lassen. In der Zeit dazwischen würde ich die Daten irgendwo temporär zwischenlagern, beispielsweise in einer eigenen Datenbank. So könntest du die Daten auch besser verwalten, eine Suche für Nutzer würde sich einfacher und schneller gestalten, da die Daten von dir bereits richtig abgelegt wurden.
Bevor du anfängst, solltest du dich aber dennoch nochmals mit der rechtlichen Perspektive von Webscraping auseinandersetzen. Lies zum Beispiel hier.
Ich würde täglich (stündlich?) Einen cron-job laufen lassen und die Tabelle auslesen, etwa mittels PHP um die ausgelesenen Daten in einer Datenbank zu speichern.
Die Ausgabe dann einfach per PHP. Eventuell nach dem Scan der Seite A schauen, welche Nutzerdaten sich verändert haben und Nutzer informieren.
Mit Java kannst du nichts machen ;-) Wenn JavaScript, aber das sind 2 verschiedene paar Schuhe.
Es sei denn, du willst eine Java Application schreiben, dann kannst du natürlich den Scanner verwenden und dir die entsprechenden Zeilen holen.
Aber vielleicht hilft dir ja das hier weiter, was Javascript angeht: https://stackoverflow.com/questions/9927126/how-to-convert-the-following-table-to-json-with-javascript
Mit Java kannst du nichts machen ;-)
Mit Java ist er an der völlig richtigen Adresse. 😉