evo cisto kao ilustracija o cemu pricam, glup primer, zamislite da negde u sred strane ima ovakvih par linkova:
HTML kôd:
<a href="foo">Foo</a>
<a href="bar">Bar</a>
<a href="neki_dinamicki_generisani_link_do_cenovnika">Prices for neki proizvod</a>
Kako preko DOM based parsera dohvatiti link cenovnika? Ili ici redom kroz sve linkove, pa traziti koji ima text koji pocinje sa Prices, sto je ovde ok, ali linkova moze biti milion, ili jos gore resenje traziti treci po redu link (pa onda to pukne cim se malo promeni dizajn). Regexp-om se to dohvata laganica. Sto je jos bitnije, dizajner moze da menja dizajn strane koliko voli (sto ecommerce sajtovi rade cesto zbog sezonskih promocija i sl), dok god je text linka nepromenjen, moj spajder radi kao sat
Ovo je jako uproscena situacija, u realnom poslu treba ispratiti gomilu linkova na strani, pronaci next page linkove, handlovati cesto lose napisan kod gde se u sred strane pojavljuju php greske ili linkovi na sledece strane rezultata koje zapravo ne postoje, menja se dizajn strane od proizvoda do proizvoda, programeri namerno prave fore da sprece parsiranje i sl. Not for the faint-hearted...
EDIT: Da me ne razume neko pogresno, nemam ja nista protiv DOM parsera, za "normalne" primene je to genijalno elegantno resenje ili ako je iz nekog razloga bitna struktura stranice, ali za komercijalne spajdere koji najcesce rade polu-legalne stvare, da ne kazem kradu sadrzaj, akademske prica o "ispravnom" nacinu parsiranja html-a su u najmanju ruku smesne...