Hello Folks
Nach langer Abwesenheit melde ich mich wieder mal hier im Forum.
Benötige wieder mal Hilfe - diesmal geht es darum, eine HTML-Seite einzulesen und den Wert eines <td>-Tags zu bestimmen. In der Vergangenheit habe ich dies schon mit einem Online-Telefonbuch gemacht. D.h. man gibt eine Rufnummer in einem Script ein und dieses sucht sich den Namen der Person aus dem Telefonbuch. Dieses Script arbeitete mit der Snoopy.class.php. Damals sah es dann ungefähr so aus:
HTML-Code der Seite:
Mein Script um den Namen auszulesen:
Heisst soviel wie: Alles zwischen <td class="name"> und </td><td class="adresse"> wird in die Variable $output geschrieben. War einfach, weil es nur ein <td>-Tag mit der class="name" gegeben hat.
Doch nun, beim neuesten Projekt gibt es aber mehrere Tags, welche keine Klasse haben... Aber am besten zeige ich dies euch gleich am aktuellen Beispiel.
Ich möchte von dieser Seite den Dollarkurs auslesen. In der linken oberen Ecke unter "Dolar Americano", die Zeile: "Ventanillo", und Spalte: "Compra". Wenn man sich den HTML-Code anschaut, sieht das nun so aus:
Also kann ich nun nicht mehr das gleiche Prinzip benutzen - da die <td>-Tags keine eindeutige Klasse haben.
Nun musste ich mich natürlich schlau machen und mich nach einer anderen Möglichkeit umsehen. Habe dann auch prompt eine gefunden: Mit Javascript - also genau die Sprache, mit der ich nicht so richtig vertraut bin. Deshalb wende ich mich nun an euch!
Ich habe mal folgendes Test-Script gebastelt:
Und tatsächlich hat die Javascript-Variable "Wertcurtest" den aktuellen Kurswert (momentan: 12.8300).
So, doch nun wie weiter? Ziel ist es schlussendlich, diesen Wert in eine MySQL-Datenbank zu schreiben. Doch: PHP=Serverseitig, JavaScript=Clientseitig.
Mit AJAX könnte man den ermittelten Wert theoretisch wieder zurückgeben, richtig? Nur, sollte ich AJAX benutzen?
Schliesslich ist bei diesem Script keine Benutzeraktivität notwendig und von daher wäre es mir am liebsten, wenn keine clientseitige Verarbeitung stattfinden würde. Sprich: Ich alles mit PHP lösen kann.
Deshalb die folgenden 2 Fragen an euch:
1. Gibt es in irgendeine Möglichkeit, die JS-Funktion getElementsByTagName auch in PHP umzusetzen?
2. Welche Lösung würdet ihr mir empfehlen?
Vielen Dank für eure Hilfe!
Schönes Wochenende und Gruss
Nach langer Abwesenheit melde ich mich wieder mal hier im Forum.
Benötige wieder mal Hilfe - diesmal geht es darum, eine HTML-Seite einzulesen und den Wert eines <td>-Tags zu bestimmen. In der Vergangenheit habe ich dies schon mit einem Online-Telefonbuch gemacht. D.h. man gibt eine Rufnummer in einem Script ein und dieses sucht sich den Namen der Person aus dem Telefonbuch. Dieses Script arbeitete mit der Snoopy.class.php. Damals sah es dann ungefähr so aus:
HTML-Code der Seite:
HTML:
.....
<table>
<td class="name">Paul</td>
<td class="adresse">Blablubbstrasse 66</td>
<td>....
Mein Script um den Namen auszulesen:
PHP:
<?
include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetch(http://pinkeseiten.ch/?number=0190123456);
$GrabStart = '<td class="name">';
$GrabEnd = '</td><td class="adresse">';
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy->results, $output1);
$output = $output1[1];
echo $output;
Heisst soviel wie: Alles zwischen <td class="name"> und </td><td class="adresse"> wird in die Variable $output geschrieben. War einfach, weil es nur ein <td>-Tag mit der class="name" gegeben hat.
Doch nun, beim neuesten Projekt gibt es aber mehrere Tags, welche keine Klasse haben... Aber am besten zeige ich dies euch gleich am aktuellen Beispiel.
Ich möchte von dieser Seite den Dollarkurs auslesen. In der linken oberen Ecke unter "Dolar Americano", die Zeile: "Ventanillo", und Spalte: "Compra". Wenn man sich den HTML-Code anschaut, sieht das nun so aus:
HTML:
....
<tr bgcolor="#EEEEEE" >
<td>
Ventanilla
</td>
<td align="right" width="44">
12.8300
</td>
<td align="right" width="44">
13.2800
</td>
</tr>
....
Also kann ich nun nicht mehr das gleiche Prinzip benutzen - da die <td>-Tags keine eindeutige Klasse haben.
Nun musste ich mich natürlich schlau machen und mich nach einer anderen Möglichkeit umsehen. Habe dann auch prompt eine gefunden: Mit Javascript - also genau die Sprache, mit der ich nicht so richtig vertraut bin. Deshalb wende ich mich nun an euch!
Ich habe mal folgendes Test-Script gebastelt:
PHP:
<?
include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetch("http://banamex.com.mx/esp/finanzas/index.html");
echo $snoopy->results;
?>
<script type="text/javascript">
Wertcurtest = document.getElementsByTagName("td")[20].firstChild.data;
alert("Test: " + Wertcurtest + " Dollares");
</script>
Und tatsächlich hat die Javascript-Variable "Wertcurtest" den aktuellen Kurswert (momentan: 12.8300).
So, doch nun wie weiter? Ziel ist es schlussendlich, diesen Wert in eine MySQL-Datenbank zu schreiben. Doch: PHP=Serverseitig, JavaScript=Clientseitig.
Mit AJAX könnte man den ermittelten Wert theoretisch wieder zurückgeben, richtig? Nur, sollte ich AJAX benutzen?
Schliesslich ist bei diesem Script keine Benutzeraktivität notwendig und von daher wäre es mir am liebsten, wenn keine clientseitige Verarbeitung stattfinden würde. Sprich: Ich alles mit PHP lösen kann.
Deshalb die folgenden 2 Fragen an euch:
1. Gibt es in irgendeine Möglichkeit, die JS-Funktion getElementsByTagName auch in PHP umzusetzen?
2. Welche Lösung würdet ihr mir empfehlen?
Vielen Dank für eure Hilfe!
Schönes Wochenende und Gruss
Zuletzt bearbeitet: