php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.02.2012, 12:48  
Neuer Benutzer
 
Registriert seit: 07.02.2012
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Benutzer2000 befindet sich auf einem aufstrebenden Ast
Standard Ganz bestimmten Inhalt auslesen

Hi @ all,

ich suche bereits eine ganze Weile nach Hilfestellungen, Scriptschnipseln und ähnlichem brauchbaren Material - vergebens.

Ich möchte aus mehreren Webseiten ganz bestimmte Werte auslesen und verarbeiten. Der Anfang ist wohl schon da (auslesen bestimmter HTML-Bereiche) und wenn ich die Werte gefiltert hätte, weiss ich auch wie ich weiter vorgehe, aber wie bekomme ich aus einem Quellcode ganz bestimmte, sich ständig wechselnde Werte gefilter (nicht nur Abschnitte, wie zB. table, span etc.)?!

Hier mein bisheriger Script-Teil (im Script wird eine Tabelle mit width="170" ausgelesen):

PHP-Code:
$host "http://www.example.com";
$filestring file_get_contents($host);
$startpos 0;
while(
$pos strpos($filestring'<table width="170"'$startpos))
{
    
$string substr($filestring$posstrpos($filestring"</table>"$pos 1) - $pos);
    echo 
$string."</br>";
    
$startpos $pos 1;


Das schwierige ist zum einen, dass die Webseiten eine unterscheidliche Formatierung benutzen, zB.: (egal ob in <table> oder <span> wat weiss ich...)

Schnecke 1: 3,2 Meter/Sekunde
Schnecke 2: 2,8 Meter/Sekunde
Schnecke 3: 2,2 Meter/Sekunde
Schnecke 4: 1,7 Meter/Sekunde

oder

Schnecke 1:
3,2 Meter/Sekunde

Schnecke 2:
2,8 Meter/Sekunde

Schnecke 3:
2,2 Meter/Sekunde

Schnecke 4:
1,7 Meter/Sekunde

und zum anderen, möchte ich aus den Beispiel, nur exakt die X,X (Meter/Sekunde) ausgelsen haben...

Die verarbeitung sieht so aus, dass ich später dann für mich festhalten will:

Schnecke 1: so und so viel Meter... etc... (Also jede Schnecke und Ihr Tempo kommt in eine Variable)

Ich wäre dankbar für Tipps und Vorschläge, wie ich das filtern könnte.
Benutzer2000 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.02.2012, 12:58  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von Benutzer2000 Beitrag anzeigen
Das schwierige ist zum einen, dass die Webseiten eine unterscheidliche Formatierung benutzen, zB.: (egal ob in <table> oder <span> wat weiss ich...)
Was bleibt denn dann noch an Gemeinsamkeit? "Schnecke X" ist doch sicher nur ein Beispiel oder sehen die Daten wirklich so aus? Dann könntest du einfach mit strip_tags() alle HTML-Tags entfernen und mit RegEx suchen:
Code:
#Schnecke (\d+):\s+([\d,]+) Meter/Sekunde#
Aber ich habe das Gefühl, das ist es nicht was du willst Also, wie würdest du das Muster nach dem gesucht werden soll präzise beschreiben? Wenn du das beantworten kannst, bist du schon einen großen Schritt weiter.
fab ist gerade online   Mit Zitat antworten
Alt 07.02.2012, 13:13  
Neuer Benutzer
 
Registriert seit: 07.02.2012
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Benutzer2000 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fab Beitrag anzeigen
Was bleibt denn dann noch an Gemeinsamkeit? "Schnecke X" ist doch sicher nur ein Beispiel oder sehen die Daten wirklich so aus? Dann könntest du einfach mit strip_tags() alle HTML-Tags entfernen und mit RegEx suchen:
Code:
#Schnecke (\d+):\s+([\d,]+) Meter/Sekunde#
Aber ich habe das Gefühl, das ist es nicht was du willst Also, wie würdest du das Muster nach dem gesucht werden soll präzise beschreiben? Wenn du das beantworten kannst, bist du schon einen großen Schritt weiter.
Also das Beispiel mit der "Schnecke x" ist dazu da, um meine Idee nicht zu veraten. Das die Grundbegriffe aber Tatsächlich immer die Selben sind und bleiben, ist aber ganz sicher. Es geht hier nicht um Namen, sondern um festgelegte Begriffe, hinter denen ein Wert angegeben ist. Dabei ändert sich immer nur der Wert und je Webseite die Formatierung, wie die Inhaber die Werte notieren (das würde aber noch weniger ein Problem sein).

Meine Schwierigkeit liegt eben darin, dass es zum Beispiel 5 feste Begriffe gibt (Schnecke 1 bis 5) und variable Werte (x,x Meter/sekunde), die zu den bestimmten Schnecken gehören. Das heisst:

- Ich ziehe mir aus der notierung der Daten, die durchsucht werden sollen Beispielsweise folgendes um es nutzen zu können:

PHP-Code:
# Es wird ausgelesen und in Variablen geschrieben:
$schnecke1 x.x;
$schnecke2 x.x;
#etc... 
Das ist so im groben mein Vorhaben
Benutzer2000 ist offline   Mit Zitat antworten
Alt 07.02.2012, 13:58  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Dann kannst du es tatsächlich so machen. Wenn die Begriffe "foo", "bar" und "baz" sind und die Werte immer mit "Meter/Sekunde" angegeben werden, könnte der Ausdruck dann so aussehen (nach strip_tags versteht sich):
Code:
#(foo|bar|baz):\s*([\d,]+) Meter/Sekunde)#i
Für sämtliche Sonderfälle wie z.B. fehlende Doppelpunkte muss der Ausdruck entsprechend angepasst werden aber wie du schon schreibst, sollte das kein Problem sein.

Auf preg_match_all muss ich dich ja nicht extra hinweisen oder?
fab ist gerade online   Mit Zitat antworten
Alt 07.02.2012, 15:45  
Neuer Benutzer
 
Registriert seit: 07.02.2012
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Benutzer2000 befindet sich auf einem aufstrebenden Ast
Standard

Ja, dass sieht momentan ganz vielversprechend aus... Ich werde mal ein paar Tests machen, ob das ganze auch bei komplexeren Sachen, mit einigen Änderungen, solide funktioniert.

Zunächst erstmal danke
Benutzer2000 ist offline   Mit Zitat antworten
Alt 07.02.2012, 15:53  
Benutzer
 
Registriert seit: 02.09.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Slyx befindet sich auf einem aufstrebenden Ast
Standard

Ich würde hier auf jeden Fall nicht mit regex sondern mit einem DOM-parser arbeiten. Das dürfte die Sache wesentlich unkomplizierter und weniger fehleranfällig machen. Mein Favorit: http://simplehtmldom.sourceforge.net/
Slyx ist offline   Mit Zitat antworten
Alt 07.02.2012, 15:55  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
egal ob in <table> oder <span> wat weiss ich
Ich will mal sehen, wie du bei der Anforderung sinnvoll mit DOM-Parser arbeiten willst
fab ist gerade online   Mit Zitat antworten
Alt 07.02.2012, 16:25  
Neuer Benutzer
 
Registriert seit: 07.02.2012
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Benutzer2000 befindet sich auf einem aufstrebenden Ast
Standard

Also wenn Ihr mich fragt, die Idee von fab funtkioniert soweit wirklich gut. Das einzige was nun noch fehlt, sind die Ziffern, die nach dem Komma kommen sollten. Im Moment spuckt er mir nur die Zahl(en) vor dem Komma aus...
Also quasi "Schnecke 1: 2 Meter/Sekunde" da fehlt noch das (,xx).

strip_tags ist in meinem Fall eine solide Sache, denn ich suche mir die Tags <table>, <div>, <span> oder was noch alles, in dem der gewünschte Inhalt ist und filter anschliessend raus.

Es ist ganz unterschiedlich, wie die Webmaster ihre Infos verpacken/listen.
Die einen in Tabellen, die anderen zwischen Div-Tags...

(EDIT): Sorry fab, ich habe übersehen, dass die Zahlen auch unterschiedlich notiert sind. Heisst die einen schreiben mit einem Punkt (xx.xx) die anderen mit einem Komma (xx,xx).

Soweit bin ich also zufrieden, vielen Dank!
Benutzer2000 ist offline   Mit Zitat antworten
Alt 07.02.2012, 16:29  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Moment...

Zitat:
Zitat von Benutzer2000 Beitrag anzeigen
ich suche mir die Tags <table>, <div>, <span> oder was noch alles, in dem der gewünschte Inhalt ist und filter anschliessend raus.
Das heißt, du weißt im konkreten Fall doch, in welchen HTML-Elementen du suchen musst? In dem Fall nehme ich alles zurück und empfehle ebenfalls einen Parser.
fab ist gerade online   Mit Zitat antworten
Alt 07.02.2012, 16:51  
Neuer Benutzer
 
Registriert seit: 07.02.2012
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Benutzer2000 befindet sich auf einem aufstrebenden Ast
Standard

Öhm...?! Naja, ich weiss nicht, die Änderungen die ich am script machen müsste, wären minimal... Ich werde das heute Abend oder morgen mal an verschiedenen Formatierungen teste. Wenn alles gut läuft und Änderungen relativ fix gemacht sind (je nach Seite), dann lass ich es so, ansonsten gucken wir mal weiter

Geändert von Benutzer2000 (07.02.2012 um 16:55 Uhr).
Benutzer2000 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS Inhalt auslesen und zählen cgee JavaScript, Ajax und mehr 29 28.09.2011 14:34
Nur bestimmten Inhalt in einer datei löschen EvilDead616 PHP Einsteiger 6 23.01.2011 00:33
[Erledigt] den Inhalt einer bestimmten Textdatei- Zeile ändern aha_01 PHP Einsteiger 3 29.12.2010 14:23
DOM: Inhalt eines Elements auslesen konze PHP Tipps 2010 2 08.08.2010 17:11
Inhalt aus Dateien auslesen Zoidberg PHP Tipps 2010 1 16.07.2010 23:27
[Erledigt] Nur bestimmten Inhalt der DB ausgeben mt.90 Datenbanken 3 14.07.2010 11:27
[Erledigt] Tabelle einfärben ByStones HTML, Usability und Barrierefreiheit 16 12.06.2010 22:20
[Erledigt] Zeile mit bestimmten Inhalt einfärben? schwandl PHP Tipps 2009 20 26.08.2009 23:36
Hilfe, Seite im Internet Explorer Buggy trowman HTML, Usability und Barrierefreiheit 4 15.09.2008 08:32
Bild verschafft sich platz HTML, Usability und Barrierefreiheit 14 11.08.2008 23:45
Auf bestimmten inhalt prüfen King2k PHP Tipps 2005-2 6 01.08.2005 00:33
bestimmten string aus spalte auslesen aircrash PHP Tipps 2005 3 01.02.2005 18:07
Textdatei auslesen, Inhalt in HTML|PHP ausgeben. PHP Tipps 2004-2 25 22.12.2004 01:34
inhalt eine upload-datei auslesen jens76 PHP Tipps 2004 8 05.08.2004 16:22
auslesen von bestimmten Strings PHP Tipps 2004 0 06.07.2004 12:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bestimmten text auslesen javascript, bestimmten inhalt mit ajax auslesen, html elemente von anderen seiten auslesen php, php alles innerhalb bestimmtem div auslesen file_get_contents, bestimmten inhalt datei auslesen php, simplehtmldom quelltext auslesen und weiterverarbeiten, simplehtmldom javascript auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum