Thema: XPATH vs DOM
Einzelnen Beitrag anzeigen
  #9 (permalink)  
Alt 25-12-2012, 22:58
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Quetschi Beitrag anzeigen
Die gängigen Browser bieten entsprechende Funktionalitäten in den Entwicklertools.
Bei Firefox, Chrome z.B. einfach rechtsklick in die Seite und "Element untersuchen" wählen.
InternetExplorer -> Taste F12 (funktioniert auch in Chrome).

Zwar wird hier auch Text-Content angezeigt - dafür kannst du verschachtelte Strukturen ein/ausklappen.
Ja, F12, war mir zwar bekannt, habe ich aber immer nur zum Untersuchen meiner website bei Fehlern angewendet. Habe jetzt mal die Struktur der einzulesenden Seite untersucht und es mit DOM und xpath versucht, dennoch kommt immer gar nix, was ich nicht verstehe, bei anderen Seiten klappt es.
Also der entsprechende Teil der Seite sieht so aus:
HTML-Code:
<div class="bd">
<div class="hl">
<a title="Die Hirten kamen als Bauarbeiter" href="http://www.testseite.de/usw.html">Die Hirten kamen als Bauarbeiter</a>
</div>
Wenn ich jetzt so suche:
PHP-Code:
$data file_get_contents('http://www.testseite.de/region/');  
$doc = new DOMDocument(); 
$doc->loadHTML($data); 
$result $doc->getElementsByTagName("h1"); 
$zaehler 1;
foreach (
$result as $node
$hreft $element->getAttribute('href');
   echo 
"<li><a href=$hreft target='_blank'>" 
                   
$element->nodeValue '</a></li>'
müssten doch title und href kommen, oder? Genauso bei:
PHP-Code:
$data file_get_contents('http://www.testseite.de/region.html');
  
$doc = new DOMDocument(); 
$doc->loadHTML($data); 

$xPath = new DOMXPath($doc);

foreach (
$xPath->query('//h1') as $element
 {

if (
$zaehler <= 15) {


$hreft $element->getAttribute('href');

         echo 
"<li><a href=$hreft target='_blank'>" 
                   
$element->nodeValue '</a></li>'
Habe es auch mit
PHP-Code:
foreach( $xpath->query('//div[contains(attribute::class, "h1")]') as $e ) {
  echo 
$e->nodeValue"<br />\n"
versucht.
Dennoch kommt bei allen dreien nix. wenn ich dagegen die vorherige Klasse "bd" suche, dann kommt was. Gruß
newbie1955

Geändert von newbie1955 (25-12-2012 um 23:33 Uhr)
Mit Zitat antworten