CodeGym /Kursy /Docker SELF /Używanie `curl` i `wget` do pobierania plików

Używanie `curl` i `wget` do pobierania plików

Docker SELF
Poziom 8 , Lekcja 4
Dostępny

Używanie curl i wget do pobierania plików

1. Wprowadzenie do curl

Zdarzyło ci się kiedyś, że na rozmowie kwalifikacyjnej poprosili cię o pobranie pliku z internetu przez terminal, a ty patrzyłeś na ekran i zastanawiałeś się, jak to zrobić? Dzisiaj nauczymy się używać curl i wget, które staną się twoimi wiernymi towarzyszami w pracy z danymi sieciowymi.

Te narzędzia pozwalają na pobieranie stron internetowych, plików, wysyłanie zapytań HTTP, pracę z API, a nawet wykonywanie skryptów automatyzacji. Omówimy ich funkcjonalność, zalety i typowe scenariusze użycia.

curl to narzędzie wiersza poleceń do przesyłania danych za pomocą protokołów sieciowych. Główna siła curl leży w jego elastyczności: obsługuje ponad 20 protokołów (HTTP, HTTPS, FTP, SCP, a nawet SMTP). Według deweloperów, to doskonały "scyzoryk szwajcarski" do pracy z internetem.

Podstawowa składnia curl

curl [opcje] URL

Krótko mówiąc, wpisujesz polecenie curl, podajesz odpowiedni adres — i cieszysz się wynikiem. Przyjrzyjmy się, jak to działa.

Pobieranie strony internetowej

Załóżmy, że chcesz pobrać główną stronę Google. Robi się to tak:

curl http://www.google.com

Na ekranie zobaczysz kod HTML strony. Całkiem przydatne, jeśli chcesz zbadać strukturę strony lub zautomatyzować coś z nią związanego.

Zapisywanie zawartości do pliku

Jeśli ten tekstowy strumień ci przeszkadza, możesz zapisać wynik do pliku:

curl -o google.html http://www.google.com

Flaga -o (output) mówi curl, że chcemy przekierować wynik do pliku. Teraz kod HTML strony został zapisany w google.html. Chcesz się pośmiać? Daj plik znajomemu i powiedz, że pobrałeś "cały internet".

Pobieranie pliku

Wyobraź sobie, że musisz pobrać plik z internetu (na przykład jakiś .zip). Z tym curl radzi sobie znakomicie:

curl -O http://example.com/file.zip

W przeciwieństwie do -o, flaga -O zapisuje plik z oryginalną nazwą podaną w URL. To przydatne, jeśli pobierasz wiele plików z jednego źródła.

HTTP uwierzytelnianie

Czasami dostęp do pliku lub zasobu API jest chroniony loginem i hasłem. W takim przypadku użyj curl z flagą -u:

curl -u username:password http://example.com/private-data

Jest to szczególnie przydatne przy pracy z zamkniętymi API, na przykład GitHub lub Docker Registry.

Pobieranie przez API

Jedna z najfajniejszych możliwości curl — praca z API. Załóżmy, że musisz wysłać żądanie na serwer, który zwraca dane w formacie JSON:

curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"

Tutaj flaga -X wskazuje metodę zapytania HTTP (GET, POST, DELETE, itd.). Do automatyzacji integracji z zewnętrznymi usługami to prawdziwy skarb.


2. Co to jest wget?

Jeśli curl to szwajcarski scyzoryk, to wget to buldożer. Jego głównym zadaniem jest pobieranie plików. Główna różnica w porównaniu z curl polega na tym, że wget jest specjalnie zaprojektowany do niezawodnego pobierania dużych plików, jak również obsługuje wznawianie pobierania, co jest bardzo przydatne przy słabym połączeniu.

Podstawowa składnia wget

wget [opcji] URL

Proste pobieranie pliku

wget http://example.com/file.zip

To polecenie pobierze plik i zapisze go z oryginalną nazwą w bieżącym katalogu. Proste i skuteczne.

Zapisywanie pod inną nazwą

Jeśli oryginalna nazwa pliku ci nie odpowiada, możesz podać swoją:

wget -O newfile.zip http://example.com/file.zip

Wznawianie pobierania

Załóżmy, że pobierasz ogromny plik, ale połączenie zostaje przerwane. Bez obaw: po prostu użyj opcji -c (continue):

wget -c http://example.com/largefile.iso

wget wznowi pobieranie od miejsca, w którym zostało przerwane. Co więcej, to działa nawet po kilku dniach, jeśli serwer obsługuje taki tryb.

Pobieranie całej strony

Tak, za pomocą wget można pobrać całą stronę (lub jej kopię). Po prostu użyj opcji --mirror:

wget --mirror http://example.com

To polecenie pobierze stronę, zachowując strukturę katalogów. Teraz masz "lustro" strony do użycia w trybie offline.


3. Porównanie curl i wget

Funkcja curl wget
Wsparcie szerokiej liczby protokołów Tak Tylko HTTP/HTTPS i FTP
Automatyczne wznawianie pobierania Nie (można skryptować) Tak
Praca z API Tak Nie
Łatwość zarządzania plikami Średnia Doskonała
Pobieranie całych stron Nie Tak

W sumie, jeśli potrzebujesz pracy z API lub czegoś specyficznego, użyj curl. Jeśli zaś potrzebujesz pobierać pliki — wget będzie najlepszym wyborem.


4. Praktyczne zastosowanie

Pobieranie i przetwarzanie pliku

Łączymy wget i nasze umiejętności pracy z tekstem:

wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'

Tutaj pobraliśmy plik, przefiltrowaliśmy wiersze za pomocą słowa kluczowego i wyciągnęliśmy potrzebne kolumny.

Praca z API

Pobieramy kursy walut za pomocą curl i znajdujemy potrzebną walutę:

curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"

To przydatne, jeśli chcesz stworzyć zautomatyzowany system przeliczania walut.

Automatyzacja aktualizacji

Wyobraź sobie, że codziennie musisz pobierać aktualizacje plików. Oto przykład prostego skryptu:

#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates

Zapisujemy skrypt i dodajemy go do cron. Teraz będzie wykonywany automatycznie — fajne, prawda?


5. Typowe błędy i szczegóły

Błąd 403 (Forbidden):

To się zdarza, jeśli serwer wymaga dodatkowych nagłówków (np. User-Agent). Można to naprawić w ten sposób:

curl -A "Mozilla/5.0" http://example.com

Przekierowania:

Jeśli serwer przekierowuje cię na inny URL, dodaj flagę -L do curl:

curl -L http://example.com

Błędy SSL:

Czasami wget lub curl mogą narzekać na SSL. Możesz wyłączyć weryfikację certyfikatu (ale to nie jest bezpieczne!):

wget --no-check-certificate https://example.com
curl -k https://example.com

Z tym potężnym arsenałem jesteś gotowy podbijać internet w terminalu. Teraz żaden plik ani API nie ucieknie przed tobą — czas pobierać, przetwarzać i automatyzować!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION