[ arsa xx @ 07.01.2004. 23:34 ] @
Na http://phpcrawl.cuab.de/ sam nasao dobar php spider.
Medjutim ima par bagova. Neke sam otklonio a neke ne.
Ako neko zna bolji ili moze da pomogne, ovako stoje stvari.

Evo primera gde se javlja bug.

Prvo da spomenem da se pronalazenje linkova vrsi sa:
Code:
preg_match_all("/((?i)href)[ ]{0,}=[ ]{0,}(\"|'){0,1}[^\"'><\n ]{0,}(\"|'|>|<|\n| )/",$source,$regs);


Pri dnu listinga se javljaju nepostojeci linkovi tj postojeci ali "odseceni".
Jedan od njih je http://localhost/!math/prodajn (drugi od dozdo)

Code:

Page requested: http://localhost/!math
Status: HTTP/1.1 301 Moved Permanently 
Referer-page: 
Content received: 305 bytes

Page requested: http://localhost/!math/
Status: HTTP/1.1 200 OK 
Referer-page: http://localhost/!math
Content received: 33415 bytes

Page requested: http://localhost/!math/index.php
Status: HTTP/1.1 200 OK 
Referer-page: http://localhost/!math/
Content received: 33415 bytes

Page requested: http://localhost/!math/prikaz.php?kat=osnovna_skola
Status: HTTP/1.1 200 OK 
Referer-page: http://localhost/!math/
Content received: 39372 bytes

Page requested: http://localhost/!math/prikaz.php?kat=srednja_skola
Status: HTTP/1.1 200 OK 
Referer-page: http://localhost/!math/
Content received: 44831 bytes

.......
....
..

Page requested: http://localhost/!math/prodajn
Status: HTTP/1.1 404 Not Found 
Referer-page: http://localhost/!math/info.php?id=26
Content received: 285 bytes

Page requested: http://localhost/!math/prodajna_mesta.php
Status: HTTP/1.1 200 OK 
Referer-page: http://localhost/!math/prodajna_mesta.
Content received: 26296 bytes

Summery:
Links followed: 67
Files received: 67
Bytes received: 1600781


[ arsa xx @ 08.01.2004. 17:07 ] @
Da li je moguce!!!
Regexp radi dobro.
Javlja se totalno nelogicna situacija.

u kod gde se citaju podaci sam dodao jednu liniju i echo.
Code:

echo $source_row=fgets($s,1024)."<hr>";
$source_read.=$source_row;


U donjem kodu se pojavljuje jedna linija u kojoj pise '200' a toga nema u html- strane!!??

Ako promenim sajt malo javlja se drugi "broj" a ne '200' npr '21a'

Code:

<hr><a href="prodajna_mesta.php?mesto=Kragujevac" class="prodajna">Kragujevac</a><br>
<hr><a href="prodajna_mesta.php?mesto=Kraljevo" class="prodajna">Kraljevo</a><br>
<hr><a href="prodajna_mesta.php?mesto=KruT12evac" class="prodajna">Kruševac</a><br>
<hr><a href="prodajna
<hr>200
<hr>_mesta.php?mesto=NiT12" class="prodajna">Niš</a><br>
<hr><a href="prodajna_mesta.php?mesto=Novi Sad" class="prodajna">Novi Sad</a><br>
<hr><a href="prodajna_mesta.php?mesto=ParaD22in" class="prodajna">Paraćin</a><br>
[ -zombie- @ 08.01.2004. 21:00 ] @
heh, baš sreća što jutros nisam imao vremena da se udubim u tvoj problem (nego sam to ostavio za kasnije), jer očigledno problem nije u onome što si postovao :-P

tvoj problem je što se spajder skripta predstavlja kao HTTP/1.1 klijent, što znači da obaveštava server da ume da prepoznaje i tzv "chunked" transfer mode.

ako te zanimaju detalji, pročešljaj HTTP/1.0 i 1.1 RFCove, a ako tražiš brzo rešenje, samo nađi u toj skripti gde se šalju GET zahtevi, i promeni verziju protokola u HTTP/1.0
[ arsa xx @ 09.01.2004. 20:52 ] @
Tacno, to je problem, hvala puno.
Srecom sam ostavio taj problem na stranu inace bih se i sad vrteo u krug.
Problem sam resio sa klasom snoopy.
Ona bas koristi HTTP/1.0(to sam sad proverio) i radi kako treba.