Parser PHP dla stron HTML

Ostatnio miałem potrzebę pobrania tabeli z cenami metali( miedź, nikiel, mosiądz).. Znalazłem coś takiego na money –> http://www.money.pl/gielda/surowce/ . Aby wstawić to na swoją stronę musiałem dokonać kilku przeróbek skryptu.  Plik skryptu nazywa się: ex_dumpurl.php. Oto jego zawartość wraz z komentarzami aby można go było łatwiej przerobić na swoje potrzeby (pamiętaj że był pisany pod tabelę z linka jak powyżej):

$start=0;
$licznik=0;

include („htmlparser.inc”); //załączenie biblioteki
$parser = HtmlParser_ForURL („http://www.money.pl/gielda/surowce/”); //adres parsowanego pliku

while ($parser->parse()) {            // stąd zaczyna się parsowanie każdego znacznika, atrybutu i wartości z pliku html

$licznik++;

if ($parser->iNodeName==”table”) $start+=1; // $start zawiera liczbę wystąpień słowa „table”

if ($start==3){ // w tym przypadku moja tabela zaczyna się od 3-ego wystąpienia 'table’ (przeanalizowałem kod z parsowanej strony)

if (($parser->iNodeName<>”img”) && ($parser->iNodeName<>”Text”) && ($parser->iNodeName<>”tr”)) echo „<„.$parser->iNodeName.”>”; //jeśli znacznik html jest inny niż IMG i TEXT i TR to wypisz go
if (($parser->iNodeName<>”img”) && ($parser->iNodeName<>”Text”) && ($parser->iNodeName==”tr”)) echo „<„.$parser->iNodeName.” bgcolor=#dddddd>”; // jesli znaleziony znacznik to TR – nadaj mu kolor tła szary

if ($parser->iNodeType == NODE_TYPE_TEXT || $parser->iNodeType == NODE_TYPE_COMMENT) {

echo iconv(„ISO-8859-2″,”UTF-8”,$parser->iNodeValue); //wypisuje wartość komórki skonwertowaną z ISO na UTF8

}

if ($parser->iNodeType == NODE_TYPE_ELEMENT) {

$attrValues = $parser->iNodeAttributes;
$attrNames = array_keys($attrValues);
$size = count($attrNames);
for ($i = 0; $i < $size; $i++) {
$name = $attrNames[$i];
// echo $attrNames[$i] . „=\”” . $attrValues[$name] . „\” „;
}
}
echo „\r\n”;
}
}
?>

Gdyby był problem ze skopiowaniem tego kodu, znajdziesz go także w poniższej paczce:
pobierz phphtmlparser

a tutaj żywy przykład działania parsera: przykład

Facebook - komentarze