Wenn es kein XML oder RSS oder sonst irgendwie strukturierte Daten gibt, muss man direkt an die Webseite gehen. Auf PHP-Basis geht es gut mit dem  PHP Simple HTML DOM Parser. Wie gut, hängt dann aber auch vom Quelltext der Webseite ab. Strukturierung oder aussagekräftige Tags sind in der Regel nicht zu erwarten. Deshalb bleibt häufig nix anderes als alle Elemente des DOM einzeln abzugehen, besonders dann, wenn die Elemente verschachtelt, aber nicht konsequent in einer Hierarchie liegen. 
Mein Beispiel ist folgendes: Die Html-Ausgangsbasis sieht wie folgt aus, abstrahiert. Das Problem ist, dass innerhalb der Item-Klasse mehrere Items mit Unteritems vorhanden sein können, diese aber gleichberechtigt nebeneinander stehen. Dies macht den Zugriff mit dem Parser schwierig. 
    
headline 1
category 1
-  Stest test test test
 test 
- Stest test test 
 test 
 
category 2
-  Stest test test test
 test 
- Stest test test 
 test 
 
category 3
-  Stest test test test
 test 
- Stest test test 
 test 
  
headline 2
category 1
-  Stest test test test
 test 
- Stest test test 
 test 
 
category 2
-  Stest test test test
 test 
- Stest test test 
 test 
  
 
for($i=0; $i";
$t2="div[id=" . $t . "]";
$result= $html->find($t2);//div mit oberster kategorie
$result=$result[0]; //alles zugehörig zu oberster kategorie
$categories=$result->find('.category');//tag category wird gesucht, in einem array abgespeichert
$z=0;
//jede oberste kategorie enthält eine bestimmte zahl an items
foreach($result->find('.item') as $item)
{
	echo "
";
	echo $categories[$z]; //tag category wird ausgegeben
	$z++;
	echo "
";
    //jedes item hat noch untergeordnete items
	$one=$item->find('.item_1');
	$two= $item->find('.item_2);
	$three=$item->find('.item_3');
	$four=$item->find('.item_4); //dieses kann max 2x vorkommen
	$tzwei=0;
    for($t=0; $t";
$test= $item->find('.item_1',$t);
  echo $test;
    $test2= $item->find('.item_2',$t)->plaintext;
    $test2=trim($test2);
//***********
  if(isset($test2) && $test2!=="")
    {
    echo " ". $test2;
        $test2="";
    }
    else
    {
        echo "nix";
    }
        //*****************
        echo "
";
        $test3=$item->find('.item_3',$t);
        $test3=trim($test3);
        if(isset($test3) && $test3!=="")
        {
            echo " ". $test3;
            $test3="";
        }
        else
        {
            echo "nix3";
        }
        //****************************
        //*****************
        echo "
";
        //weil unteritem 4 max 2x vorkommen kann, wird ein extra zähler eingeführt
        if(isset($tzwei) && $tzwei!==0)
        {
            $tzwei++;
        }
        else
        {
            $tzwei=$t;
        }
        $test4=$item->find('.item_4,$tzwei);
        $test4=trim($test4);
        if(isset($test4) && $test4!=="")
        {
            echo " ". $test4;
            $test4="";
        }
        else
        {
            echo "item4 nr 1";
        }
        //****************************
        //*****************
        echo "
";
         $tzwei++;
        $test5=$item->find('.item_4',$tzwei);
        $test5=trim($test5);
        if(isset($test5) && $test5!=="")
        {
            echo " ". $test5;
            $test5="";
        }
        else
        {
             echo "item4 nr  2";
        }
          echo "
";
        //****************************
    }
	}
	echo "
";
}
								
Als Erster einen Kommentar schreiben