Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nauka PHP(co dalej) + pierwszy skrypt.
Forum PHP.pl > Forum > Przedszkole
Kolorek9119
Witam, pytanie z serii: "Co dalej?" + problem z moim pierwszym skryptem.

Tak więc, przerobiłem kilka kursów php. Znam podstawową konstrukcję, pętle, instrukcje warunkowe, zmienne, zasady programowania obiektowego, potrafię się łączyć z bazą danych i tworzyć jakieś podstawowe zapytania. I co dalej? Nie potrafię za bardzo sobie poradzić już z praktycznym zastosowaniem php w środowisku www. Chciałbym np. napisać skrypt który pobierałby obrazki z danej strony i zapisywał je w folderze na moim komputerze. (1 obrazek = 1 plik).

Co ja o tym myślę?
1. Muszę się połączyć ze stroną.
2. Wyselekcjonować obrazki (czyli wszystko co ma tag <img>) czyli znaleźć je.
3. Pobrać do folderu.

Prosiłbym o jakieś wskazówki. Pozdrawiam.
pitu
1. file_get_contents
2. Wyrażenia regularne lub PHP Simple HTML DOM Parser
3. file_put_contents
b4rt3kk
Cytat(Kolorek9119 @ 7.08.2013, 16:24:39 ) *
Witam, pytanie z serii: "Co dalej?" + problem z moim pierwszym skryptem.

Tak więc, przerobiłem kilka kursów php. Znam podstawową konstrukcję, pętle, instrukcje warunkowe, zmienne, zasady programowania obiektowego, potrafię się łączyć z bazą danych i tworzyć jakieś podstawowe zapytania. I co dalej? Nie potrafię za bardzo sobie poradzić już z praktycznym zastosowaniem php w środowisku www. Chciałbym np. napisać skrypt który pobierałby obrazki z danej strony i zapisywał je w folderze na moim komputerze. (1 obrazek = 1 plik).

Co ja o tym myślę?
1. Muszę się połączyć ze stroną.
2. Wyselekcjonować obrazki (czyli wszystko co ma tag <img>) czyli znaleźć je.
3. Pobrać do folderu.

Prosiłbym o jakieś wskazówki. Pozdrawiam.


Jeśli masz zamiar pobierać te pliki do folderu na Twoim komputerze, to nie ma takiej możliwości. Chyba, że chodzi Ci o folder na lokalnie działającym serwerze.
Kolorek9119
  1. <?php
  2. include('simplehtmldom_1_5/simple_html_dom.php');
  3.  
  4. $html = file_get_html('STRONA Z OBRAZKAMI');
  5.  
  6. $i = 0;
  7. $toFile = 'C:\\ZDJECIA\img';
  8. foreach($html->find('img') as $element){
  9. $img = fopen($element->src, 'r');
  10. file_put_contents($toFile.$i.'.jpg', $img);
  11. fclose($element->src);
  12. $i++;
  13. }
  14.  
  15.  
  16. ?>


Stworzyłem coś takiego. Na jednej stronie mi zadziałało i pobrało obrazki do folderu, a z innej już nie. Co tutaj jest źle?
sciezka
sciezka 7 linijka
  1. $toFile = 'C:\\ZDJECIA\img';
Kolorek9119
Cytat(sciezka @ 8.08.2013, 13:27:20 ) *
sciezka 7 linijka
  1. $toFile = 'C:\\ZDJECIA\img';

Nie rozumiem. Przecież łączy mi się z tą ścieżką i zapisuje pliki do tego folderu. Błąd musi być gdzieś indziej. Wydaje mi się, że coś "blokuje kod". Bo na jednej stronie mi działa na innej już nie.
Kolorek9119
Dobra udało mi się poprawić skrypt. Tutaj końcowy efekt:
  1. <?php
  2. include('simplehtmldom_1_5/simple_html_dom.php');
  3. ini_set('max_execution_time', 300);
  4.  
  5. $html = file_get_html('STRONA WWW');
  6.  
  7. $i = 0;
  8. $toFile = 'KATALOG GDZIE MAJA BYĆ ZAPISANE OBRAZKI';
  9.  
  10. foreach($html->find('img') as $element){
  11. $img = $element->src;
  12. if(preg_match('/^[http]/', $img)){
  13. $imgOpen = fopen($element->src, 'r');
  14. file_put_contents($toFile.$i.'.jpg', $imgOpen);
  15. fclose($imgOpen);
  16. $i++;
  17. }
  18.  
  19. }
  20. echo "Pobieranie obrazków ukończone";
  21.  
  22. ?>

Jakieś sugestie co do kodu? Bo na pewno nie jest najwyższej jakości smile.gif
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.