[PHP] Jak pobrać i zapisać na dysk wskazane strony WWW?

0x01 graphic

Chcesz pobrać wskazane strony WWW i zapisać ich treść na dysku lokalnym.

0x01 graphic

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.