Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ściągnięcie strony
Forum PHP.pl > Forum > Przedszkole
Gość_Pawel
Cześć,
Jestem bardzo początkuj acy wi ec nie przeraźcie się tym pytaniem

Potrzebuje napisać krótki programik

Programik ten będzie raz na dobę ściągał określoną stronę z internetu
i zapisywał ją na dysku a potem obrabiał
lub
ściągał obrabiał i zapisywał wynik do pliku

Teraz mam pytania
1. jak sprawić aby programik php uruchamiał się np raz dziennie o którejś godzinie ?
2. Jak ściągnąć automatycznie stronę przy pomocy php i zapisać na dysku?
3. Może jest jakies rozwiązanie aby ściągnąc ją do pamięci i obrabiać plik w pamięci a następnie zapisać wynik do pliku ?


Paweł
NuLL
1. Szukaj -> CRON
2. fopen" title="Zobacz w manualu php" target="_manual
3. JW
hwao
Co do odpalania co jakis czas.
Jest z tym roblem, mianowicie mozna to rozwiazac na pare sposobow - to zalezy co sie ma. Najprosciej jest poprostu kazac php odpalac sie co iles tam czasu przy pomocy cron (linux), lub wywolywac zdalnie request (jezeli mamy jakiegos kompa co dziala w godzianch co powinno to sie wykonywac.
Jezeli ta strona jest wlaczana (uds publice) to mozna poprostu sprawdzac kiedy byly pobrane ostanie dane i jak wiecej niz godzine temu to je ladujemy

Pobranie zawartosci strony.
Rozumie ze chodzi o sam text (bez grafiki i reszty bajerow). W takim razie najlepiej to roziwazac fsockopen" title="Zobacz w manualu php" target="_manual a nie jak napisal poprzednik fopen (bardzo czesto to jest nie dozwolone, poniewaz jak sa poczatkujacy programisi moze to prowadzic do powaznych dziur w bezpieczenstwie). Dlatego polecam wyzej wspomniana funckje:
  1. <?php
  2.  function fetchURL( $url ) {
  3.  $url_parsed = parse_url($url);
  4.  $host = $url_parsed["host"];
  5.  $port = $url_parsed["port"];
  6.  if ($port==0)
  7.  $port = 80;
  8.  $path = $url_parsed["path"];
  9.  
  10.  //if url is http://example.com without final "/"
  11.  //I was getting a 400 error
  12.  if (empty($path))
  13.  $path="/";
  14.  
  15.  //redirection if url is in wrong format
  16.  if (empty($host)):
  17.  $host="www.somesite.com";
  18.  $path="/404.shtml";
  19.  endif;
  20.  
  21.  if ($url_parsed["query"] != "")
  22.  $path .= "?".$url_parsed["query"];
  23.  $out = "GET $path HTTP/1.0rnHost: $hostrnrn";
  24.  $fp = fsockopen($host, $port, $errno, $errstr, 30);
  25.  fwrite($fp, $out);
  26.  $body = false;
  27.  while (!feof($fp)) {
  28.  echo fgets($fp, 128);
  29.  }
  30.  fclose($fp);
  31.  return $in;
  32. }
  33.  
  34. $source = fetchURL( 'http://jakas.strona.pl/index.php?cos=2' );
  35. ?>

Teraz w zmiennej source mamy caly text strony, co z nim zrobisz (zapiszesz, czy bedziesz szukal danych) zalezy tylko i wylacznie od Ciebie.

Jezeli chcesz wybrac fragment jakis najlepiej jest uzyc wyrazen regularnych, chyba ze dokument ma budowe xml'a (wtedy jak pracujesz na php5 masz standartowo biblioteke do radzenia sobie wlasnie z tym formatem, jezeli to jest php4 mozesz poszukac gotowych rozwiazan sa takowe napisane).
Gość_Pawel
wyprobowalem ta funkcje

  1. <?php
  2.  
  3. $source = fetchURL( 'http://www.onet.pl');
  4.  
  5. $plik=fopen("plik.txt", "w");
  6. fputs($plik, $source);
  7. fclose($plik);
  8.  
  9. ?>


poprawiam
---
nospor



Zrobiłem taki programik i probowalem na kilku różnych adresach
ale plik po jego wywołaniu jest pusty( mimo że się tworzy)

tak jakby zmienna $source była pusta

na czym może polegac problem moze funkcja nie dziala ?


Pawel
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.