Ik wil van een website alle links gaan spideren. Ik gebruik geen database, maar een txt bestand om bepaalde reden.
Alle landen uit die website zijn in de txt bestand gespiderd. Maar in die landenpagina staan nog meer links en die wil ik ook gaan spideren.
Met foreach krijg ik alle landen tekstbestand netjes onder elkaar. Geen probleem dus. Als ik begint met landenpagina te gaan spideren, krijg ik de laatste land gespiderd ipv 1e land. Hoe kan ik dat best oplossen?
De code:
function getBron($url){
$useragent = "Googlebot/2.1 (http://www.googlebot.com/bot.html)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$bestand = curl_exec($ch);
curl_close($ch);
return $bestand;
}
function getLinks($url){
//global $land;
$pagina = getBron($url);
$tag_lijst = array ();
$tag_lijst = explode(">", $pagina);
$links = array();
$regs = array();
while (list ($id, $htmlTag) = each($tag_lijst)){
if (stristr($htmlTag, "href")) {
preg_match("/(href)\s*=\s*[\'\"]?(([[a-z]{3,5}:\/\/(([.a-zA-Z0-9-])+(:[0-9]+)*))*([+:%\/\?~=&;\\\(\),._ a-zA-Z0-9-]*))(#[.a-zA-Z0-9-]*)?[\'\" ]?(\s*rel\s*=\s*[\'\"]?(nofollow)[\'\"]?)?/i", $htmlTag, $regs);
$links[] = $regs[2];
}
}
foreach ($links as $item => $value){
$fh = fopen($land.'.txt', 'a');
fwrite( $fh, sprintf("%s\r\n", $value ) );
fclose( $fh );
print_r($value);
}
}
$data = file ("landen.txt");
foreach ($data as $value) {
$land = explode ('\t\n', $value);
getLinks($land[0]);
}
Met de code ziet niks mis aan...Wie weet dus hoe ik elk land in lusje kan stoppen en begint met nieuwe wanneer de 1e klaar is..en ga zo door tot einde van de regel.