„Biblioteka żądań Pythona jest jedną z najbardziej wszechstronnych i cennych bibliotek w ekosystemie Python. Jego cechy i niesamowita prostota sprawiają, że warto zasilać wiele aplikacji Pythona."
Ten samouczek nauczy nas, jak pobrać plik z danego adresu URL za pomocą pakietu żądań.
Instalacja i konfiguracja
Przed użyciem metody żądań musisz upewnić się, że jest ona zainstalowana w środowisku. Możesz to zrobić, uruchamiając polecenie PIP, jak pokazano:
$ sudo pip żądania instalacji
Lub
$ sudo pip3 żądania instalacji
W systemie Windows możesz uruchomić polecenie:
$ Python -m PIP żądania instalacji
Jeśli masz zainstalowaną kondę, uruchom polecenie:
CDADA Instaluj żądania anaconda
Przykład 1 - Pobierz prosty plik
Możemy pobrać plik za pomocą modułu żądań, określając adres URL do pliku i używając modułu pliku Python do zapisywania treści do danej nazwy pliku.
Przykładowa ilustracja pokazano poniżej:
$ Touch ~/Download_image.py
Edytuj plik i dodaj kod:
$ vim ~/Download_image.py
żądania importu
url = 'https: // prześlij.Wikimedia.org/wikipedia/commons/a/af/smoking.png '
r = żądania.GET (URL, zezwolenie_directs = true)
Z otwartym („Tux.png ', „wb”) jako f:
F.pisarz.treść)
W powyższym kodzie zaczynamy od zaimportowania modułu żądań. Następnie tworzymy zmienną trzymającą adres URL do pliku, który chcemy pobrać. W takim przypadku chcemy pobrać obraz.
W trzecim wierszu tworzymy obiekt odpowiedzi HTTP i składamy żądanie GET do określonego adresu URL. Ustawiamy również ALLAME_REDIRECTS TRUE, aby umożliwić klientowi śledzenie przekierowania (jeśli istnieje). Obiekt odpowiedzi jest następnie zapisywany w zmiennej o nazwie R.
Wreszcie zapisz odebrany obiekt w pliku jako Tux.PNG w trybie binarnym.
Następnie możesz sprawdzić katalog, w którym znajduje się skrypt dla smokingu.plik PNG.
Przykład 2 - Pobierz duże pliki
W powyższym przykładzie używamy r.Content Func, który przechowuje plik jako ciąg. Jest to praktyczne przy pobieraniu małych plików. Jednak podczas pobierania dużych plików funkcja nie będzie obsługiwać zapisywania żądanych danych jednocześnie.
Aby to rozwiązać, musimy pobrać plik jako strumienie. Dlatego możemy użyć R.funkcja iter_content i ustaw parametr strumienia na true.
Dzieje się tak, ponieważ użycie r.Content () Funkcja z parametrem strumienia do TRUE będzie utrzymywać tylko otwarte połączenie i odpowiedź, a nie odczytać określonego pliku.
R.Funkcja iter_content pozwala nam to rozwiązać.
Przykładem jest jak pokazano:
żądania importu
url = "https: // hastie.Su.domeny/islr2/islrv2_website.PDF "
r = żądania.GET (URL, zezwolenie_redirects = true, stream = true)
z otwartym ('ISLRV2.pdf ', „wb”) jako plik:
dla porodu w r.iTer_Content (chunk_size = 1024):
Jeśli kawałek:
plik.Napisz (kawałek)
Kod powyżej używa pętli do zapisywania kawałków danych (każdy 1024 bajtów) do określonego pliku.
Przykład 3 - Sprawdzanie typu pliku przed pobraniem
Możemy sprawdzić rodzaj treści odbieranych z nagłówków. Następnie możemy użyć tej wartości, aby sprawdzić, czy plik, który chcemy pobrać, jest prawidłowy.
Na przykład, jeśli chcemy pobrać plik ISO i odbierać typ HTML lub tekst, wiemy, że jest to nieprawidłowy plik i zamknij połączenie.
Przykładowy kod jest taki jak pokazano:
żądania importu
url = "https: // cdimage.Debian.ORG/Debian-CD/Current/AMD64/ISO-DVD/Debian-11.4.0-AMD64-DVD-1.ISO "
r = żądania.GET (URL, zezwolenie_redirects = true, stream = true)
H = żądania.głowa (URL, zezwolenie_directs = true)
Nagłówek = h.nagłówki
content_type = nagłówek.Get („Content-Type”)
Jeśli „html” w content_type.niżej():
R.zamknąć()
drukuj („niepoprawny typ pliku”)
Jeśli „tekst” w content_type ().niżej():
R.zamknąć()
drukuj („niepoprawny typ pliku”)
w przeciwnym razie:
z otwartym ('ISLRV2.ISO ', „WB”) jako plik:
dla porodu w r.iTer_Content (chunk_size = 1024):
Jeśli kawałek:
plik.Napisz (kawałek)
Zamknięcie
Nauczyłeś się pobrać plik za pomocą modułu żądań Pythona w tym artykule. Nauczyłeś się również pobierać duże pliki.
Dziękuje za przeczytanie!!