[PHP] Jak pobrać i zapisać na dysk wskazane strony WWW?
Chcesz pobrać wskazane strony WWW i zapisać ich treść na dysku lokalnym.
Czasem przydaje się zapisanie informacji publikowanych na stronach WWW. Treść można wykorzystać do przetwarzania danych lub w celach archiwalnych. Stwórzmy listę konkretnych stron, które będziemy pobierać i zapisywać na dysku.
<?
$adresy[]="http://www.serwer.pl/index.php";
$adresy[]="http://www.innyserwer.pl/katalog/index.php";
$adresy[]="http://kolejny-serwer.pl/katalog/?id=a/cellpadding";
for ($i=0;$i<count($adresy);$i++) {
$f = fopen($adresy[$i], "r");
if ($f) {
while(!feof($f)) $strona.= fread($f,1024); fclose($f);
$f=fopen("$i.txt","w");fputs($f,"$strona");fclose($f);
} else { echo "Problem ze stroną:".$adresy[i]; }
$strona="";
}
?>
W tablicy $adresy definiujemy sobie adresy wybranych stron, które mają zostać zapisane na dysk. W pętli for pobierany jest kolejny adres strony i za pomocą funkcji fopen() otwieramy stronę do odczytu.
Jeżeli udało się poprawnie otworzyć plik (informuje o tym uchwyt pliku $f), w pętli while() pobieramy zawartość strony w porcjach po 1024 bajty (znaki). Jeżeli całość zostanie pobrana, w zmiennej $strona mamy już pełny tekst ze strony, taki jaki możesz zobaczyć w źródle strony w przeglądarce.
Teraz pozostało zapisać go na dysku w pliku .txt (może być również rozszerzenie .html). Otwieramy plik do zapisu (w - write) funkcją fopen(), za pomocą fputs() umieszczamy zmienną w pliku i zamykamy plik. Nazwy plików numerowane są jak pola w tablicy, a więc od zera.
Pozostało jeszcze wyzerować zmienną $strona i już można pobierać kolejną witrynę, jeżeli znajduje się w tablicy z adresami.