Artykuły na każdy temat

[PHP] Ripper grafiki czyli jak ściągnąć obrazki z dowolnej strony

Dodano 14.08.2010r. o 22:16
Ten artykuł jest swojego rodzaju kontynuacją wpisu Ściąganie demotywatorów na dysk.

Informacje ogólne

Aktualna wersja oznaczona jest cyferką: 1.00.00. Changelog znajduje się w paczce ze skryptem. Paczkę ze skryptem można ściągnąć stąd.

Konfiguracja

Konfiguracja jest prosta i ogranicza się wyłącznie do edycji pliku config.php. Poniżej znajduje się lista zmiennych wraz z tym za co one odpowiadają.
  • $config['domain'] - adres strony, z której maja zostać ściągnięte obrazki (koniecznie bez http:// na początku oraz / na końcu. Jeżeli witryna posiada mechanizm redirect np. z www.example.com na example.com to należy wpisać adres example.com i vice versa
  • $config['change_file_naming'] - zmienna mówiąca skryptowi czy przy zapisie obrazków ma zmieniać ich nazwę. Nowa nazwa jest wynikiem funkcji md5() pełnego adresu czyli np.
    Kod:
    <?php md5('http://www.example.com/path/file_name.ext'); ?>
    
  • $config['overwrite_protection'] - jeżeli wartość tej zmiennej wynosi true wtedy skrypt nie dopuści do nadpisania plików w folderze z grafika
  • $config['dir'] - tutaj chyba wiadomo o co chodzi, prawda? Wink
  • $config['permitted_path'] - jest to tablica z zasadami mówiącą, które adresy mogą być indeksowane. Reguły odnoszą się do tzw. path czyli ścieżki. Jeżeli chcecie aby robot przeszukał cala stronę wtedy pozostawcie pustą tablicę.

Wymagania

Udostępniony skrypt powinien działać na każdej wersji PHP 5. W poprzedniej wersji wymagałem od Was troszkę manipulacji w kodzie. Tym razem jedyną rzecz jaka musicie ruszać jest konfiguracja Smile Takie bajery jak max_execution_time czy allow_url_fopen ustawia skrypt w metodzie crawl().

Dostępne metody

  • add_image_to_list() - metoda dodaje adres grafiki do listy
  • add_link_to_list() - metoda dodaje link do listy
  • crawl() - metoda główna uruchamiająca robota indeksującego
  • download_images() - metoda pobierająca grafikę z listy
  • dump_core() - metoda wyrzucająca pole core z rezultatami indeksowania
  • get_domain() - pobiera domenę z adresu (np. z adresu www.test1.test2.domena.pl zwróci domena.pl)
  • get_extension() - pobiera rozszerzenie pliku z adresu
  • get_file_name() – pobiera nazwę pliku z adresu
  • get_image() - wyłuskuję adres grafiki ze znacznika <img>
  • get_links() - wyłuskuję linki ze znacznika <a>
  • is_address_exists() - metoda sprawdza czy podany adres istnieje na liście
  • is_correct_path() - metoda sprawdza czy podana ścieżka jest prawidłowa
  • is_link() – sprawdza czy podany ciąg jest linkiem
  • ripper() - konstruktor, jako argument przyjmuje konfiguracje
  • stat() - zwraca statystyki indeksowania

Jak uruchomić

  1. Wrzucamy do odpowiedniego folderu
  2. Upewniamy się, że mamy wystarczająco miejsca
  3. Konfigurujemy skrypt
  4. Uruchamiamy i czekamy cierpliwie na wyniki

Rezultat działań skryptu

Po zakończeniu działań indeksowania i ściągania wywołana metoda stat() wyrzuci tablice, która będzie wyglądać mniej więcej tak:
Kod:
Array ( [downloaded] => Array ( [images] => 1058 ) [indexed] => Array ( [images] => 1058 [links] => 106 ) )
Jeżeli macie potrzebę zapisania wyników indeksowania wtedy wywołajcie metodę dump_core() i obrabiacie wyniki. Ów metoda zwróci pole core, które zawiera linki i adresy grafiki w kluczach. W wartości tablic są boolowskie. Jeżeli jest true oznacza to, że ściągnięto grafikę bądź zaindeksowano stronę.

Lista rzeczy do zrobienia

  • Możliwość skanowania wielu stron na raz (wielowątkowość)
  • Możliwość zapisywania wyników do plików/baz danych
  • Możliwość zapisywania obrazków z określonej podstrony do podfolderu
  • Możliwość definiowania własnych reguł dla metody get_image()
  • Możliwość definiowania z zewnątrz adresów do zindeksowania

Komentarze

Publikowane komentarze są prywatnymi opiniami użytkowników serwisu. Serwis nie ponosi odpowiedzialności za treść opinii. W trosce o zachowanie poziomu dyskusji wszystkie komentarze podlegają akceptacji przed ich publikacją dlatego proszę cierpliwie czekać aż komentarz zostanie opublikowany.

Kshyhoo

Dodano 28.01.2012r. o 10:26
U mnie zwraca tylko pustą tablicę.

Dodaj komentarz

Zostaw komentarz jeżeli możesz! Nie bądź przysłowiowym botem! Nie bądź obojętny! Ciebie to nic nie kosztuje, a mi sprawi uśmiech na twarzy.
Zezwolono używać: BBCode
Zabroniono używać:
znaczników HTML

(Wymagany)

(Wymagany, niepublikowany)

(Nie wymagana)

Token:

Obrazek dla bota

(Przepisz tylko cyfry!)

(Wymagana)