anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 19 Nov, 2018 07:51

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: PHP-DOMDocument-Objekt
BeitragVerfasst: Mi 04 Mär, 2009 20:09 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Guten Abend.
Ich wende mich hier an euch, da sich mir während der Arbeit heute eine kleine Frage aufgebahnt hat.

Ich darf für Arbeit eine HTML-Seite parsen. Gewisse Daten aus dem Quelltext lesen. Daten, die allerdings nicht unbedingt zweifelsfrei in einem bestimmten Div sind.

Nun habe ich zuerst mit substr, str_replace, strpos zur Genüge herumgebastelt. Es funktioniert soweit auch.
Danach hatte ich allerdings das PHP-DOMDocument-Objekt entdeckt, und eine Sonne ging auf in meinem Herzen. *g*

Was mir bei diesem allerdings aufgefallen ist - Es scheint alle restlichen HTML-Tags aus einem Node zu filtern. Leider.
Hat denn bereits jemand mit dem DOMDocument-Objekt gearbeitet, und hat möglicherweise dasselbe Problem erlebt?

Als Beispiel:
Code:
error_reporting( 0 );

$html = new DOMDocument();
$html->loadHTMLFile( "http://shop.alltron.ch/tabid/466/Default.aspx?ID=1116" );
$tags = $html->getElementsByTagName('td');


foreach ($tags as $tag) {
   if ( $tag->getAttribute('class') == "beschreibung" ) {
      echo $tag->nodeValue;       
      break;
   }
}

Die davon erzeugte Ausgabe:
Zitat:
Adaptec 2904 CD Kit SCSI-Controller Bis zu 10 MB/s Übertragungsrate Externer DB50-pin Mini Anschluss Die Karte einfach in einen PCI-Steckplatz einstecken und SCSI-Peripheriegeräte anschliessen. Fertig. Systemvoraussetzungen PCI Steckplatz Microsoft Windows XP, 2000 Professional, Me, NT, 98, 95, 3.1 DOS ab 6.0 Mac ab OS 8.5 Technische Daten Allgemein Protokolle - SCSI-1, SCSI-2, Fast SCSI-2 Anschlussart - 32-bit PCI Anschlüsse intern - 50-pin Anschlüsse extern - DB50mini Max. Geräteanzahl - 7 Max. Übertragungsrate - bis zu 10 MByte/sec

Eben dieses Beispiel meinte ich damit. Die Ausgabe des td-Nodes mit dem class-Attribut=beschreibung wird von allen HTML-Tags befreit, was für mich nicht wirklich praktisch ist, leider.


Ich hoffe, dass mein Problem einigermassen verständlich ist, und mir vielleicht sogar jemand weiterhelfen kann.

Mit freundlichen Grüssen,
Harthas


P.S. Einen Hinweis auf reguläre Ausdrücke brauche ich per Se nicht. Ist damit durchaus ebenfalls möglich, ich weiss. Nur mag ich Regex nicht sonderlich. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PHP-DOMDocument-Objekt
BeitragVerfasst: Mi 04 Mär, 2009 21:24 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Öhm, also so wie ich das lese sieht es wohl schlecht aus, untergeordnete Tags eben wiederum als neue Elemente angehsen werden. Du könntest allerdings versuchen, die Tags mit $tag->tagName zu rekonstruieren oder in einer rekursiven Funktion jeweils auch die Child-Tags zu verarbeiten. Hier könnte es aber auch wieder probleme geben, da die meisten HTML-Seiten nicht sauber und xml-gerecht gecodet sind, sodass jeder Text als terminales Element in einem eigenen Tag steht (und auch da könnten Inline-Tags noch neue Probleme bereiten)

Ansonsten frage einfach mal bei phpbar, tutorials.de oder anderen größeren PHP-Platformen nach, da da ist die Wahrscheinlichkeit größer, das jemand das Ding benutzt.

Auric

Edit: Bin gerade noch auf $tag->textContent aufmerksam geworden.. habe zwar kein Beispiel gefunden, aber du kannst es ja mal ausprobieren - klingt ja recht vielversprechend.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PHP-DOMDocument-Objekt
BeitragVerfasst: Mi 04 Mär, 2009 21:37 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Hm. Da könntest du natürlich recht haben.
Mit $tag->textContent lässt sich leider nichts machen. Scheint noch immer dasselbe zu sein.

Wie auch immer. Danke dir. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum