Tải xuống hình ảnh yêu cầu Python

“Thư viện Yêu cầu Python là một trong những thư viện linh hoạt và có giá trị nhất trong hệ sinh thái Python. Các tính năng và sự đơn giản đáng kinh ngạc của nó khiến nó trở nên đáng giá trong việc cung cấp năng lượng cho nhiều ứng dụng python. ”

Hướng dẫn này sẽ dạy chúng ta cách tải xuống tệp từ một URL nhất định bằng gói yêu cầu

Cài đặt và thiết lập

Trước khi sử dụng phương thức yêu cầu, bạn phải đảm bảo nó được cài đặt trong môi trường của bạn. Bạn có thể làm điều này bằng cách chạy lệnh pip như hình

$ sudo pip cài đặt yêu cầu

 
hoặc

$ sudo yêu cầu pip3 cài đặt requests

 
Trên Windows, bạn có thể chạy lệnh.

$ python -m pip cài đặt requests

 
Nếu bạn đã cài đặt conda, hãy chạy lệnh.

conda cài đặt -c yêu cầu anaconda

 

Ví dụ 1 – Tải xuống một tệp đơn giản

Chúng tôi có thể tải xuống một tệp bằng cách sử dụng mô-đun yêu cầu bằng cách chỉ định URL cho tệp và sử dụng mô-đun tệp Python để ghi nội dung vào một tên tệp đã cho

Một ví dụ minh họa được hiển thị dưới đây

$ chạm ~ / download_image. p

 
Chỉnh sửa tệp và thêm mã.

$ vim ~ / download_image. py
yêu cầu nhập
url = 'https. //tải lên. wikimedia. org/wikipedia/commons/a/af/Tux. png'
r = yêu cầu. get ( url, allow_redirects =True )
with open('tux.png' , 'wb') as f:
    f. viết ( r. nội dung )

 
Trong đoạn mã trên, chúng tôi bắt đầu bằng cách nhập mô-đun yêu cầu. Sau đó, chúng tôi tạo một biến chứa URL của tệp mà chúng tôi muốn tải xuống. Trong trường hợp này, chúng tôi muốn tải xuống một hình ảnh.

Trong dòng thứ ba, chúng tôi tạo một đối tượng phản hồi HTTP và thực hiện yêu cầu GET tới URL đã chỉ định. Chúng tôi cũng đặt allow_redirects thành True để cho phép khách hàng theo dõi các chuyển hướng (nếu có). Đối tượng phản hồi sau đó được lưu vào biến có tên r

Cuối cùng, lưu đối tượng nhận được vào một tệp dưới dạng tux. png ở chế độ nhị phân

Sau đó, bạn có thể kiểm tra thư mục chứa tập lệnh cho tux. tập tin png

Ví dụ 2 – Tải xuống tệp lớn

Trong ví dụ trên, chúng tôi sử dụng r. nội dung func, lưu trữ tệp dưới dạng chuỗi. Điều này là thực tế khi tải xuống các tệp nhỏ. Tuy nhiên khi tải file có dung lượng lớn chức năng sẽ không xử lý ghi dữ liệu được yêu cầu cùng lúc

Để giải quyết vấn đề này, chúng tôi cần tải xuống tệp dưới dạng luồng. Do đó, chúng ta có thể sử dụng r. iter_content và đặt tham số luồng thành true

Điều này là do sử dụng r. content() với tham số luồng là true sẽ chỉ giữ kết nối và phản hồi mở và không đọc tệp đã chỉ định

các r. hàm iter_content cho phép chúng tôi giải quyết vấn đề này

Một ví dụ như được hiển thị

yêu cầu nhập
url = "https. // vội vàng. su. tên miền/ISLR2/ISLRv2_website. pdf"
r = yêu cầu. get ( url, allow_redirects =True, stream=True)
with open('ISLRv2.pdf' , 'wb') as file:
    cho đoạn trong r. iter_content (chunk_size = 1024 . :
        if đoạn.
          tệp. viết ( đoạn )

 
Mã ở trên sử dụng vòng lặp for để ghi các đoạn dữ liệu (mỗi đoạn 1024 byte) vào tệp đã chỉ định.

Ví dụ 3 – Kiểm tra loại tệp trước khi tải xuống

Chúng tôi có thể kiểm tra loại nội dung nhận được từ các tiêu đề. Sau đó, chúng tôi có thể sử dụng giá trị này để kiểm tra xem tệp chúng tôi muốn tải xuống có đúng không

Ví dụ: nếu chúng tôi muốn tải xuống tệp iso và nhận HTML hoặc loại văn bản, chúng tôi biết đây là tệp không chính xác và đóng kết nối

Một mã ví dụ như được hiển thị

yêu cầu nhập
url = "https. // cdimage. debian. org/debian-cd/current/amd64/iso-dvd/debian-11. 4. 0-amd64-DVD-1. iso"
r = yêu cầu. get ( url, allow_redirects =True, stream=True)
h = requests.head( url, allow_redirects =True )
header = h.headers
content_type = tiêu đề. get ('content-type')
if 'html' in content_type.lower() .
    r. đóng ()
    in ( . thấp hơn)
if 'text' in content_type().lower() .
    r. đóng ()
    in ( . )
else:
    mở ('ISLRv2. iso' , 'wb') as file:
        cho đoạn trong r. iter_content (chunk_size = 1024 . :
            if đoạn.
            tệp. viết ( đoạn )

 

Đóng cửa

Bạn đã học cách tải xuống tệp bằng mô-đun yêu cầu Python trong bài viết này. Bạn cũng đã học cách tải xuống các tệp lớn

Làm cách nào để truy xuất hình ảnh qua HTTP bằng Python?

ổ cắm nhập khẩu
thời gian nhập khẩu
MÁY CHỦ = 'dữ liệu. pr4e. tổ chức'
CỔNG = 80
mysock = ổ cắm. ổ cắm (ổ cắm. AF_INET, ổ cắm. SOCK_STREAM)
bím tóc. kết nối((HOST, PORT))
bím tóc. sendall(b'GET http. //dữ liệu. pr4e. tổ chức/bìa3. jpgHTTP/1. 0\r\n\r\n')

Làm cách nào để tải xuống hình ảnh từ internet bằng Python?

Cách tải xuống tất cả hình ảnh từ một trang web bằng Python .
yêu cầu cài đặt pip3 bs4 tqdm
yêu cầu nhập nhập os từ tqdm nhập tqdm từ bs4 nhập BeautifulSoup dưới dạng bs từ urllib. .
xác định is_valid(url). """ Kiểm tra xem `url` có phải là URL hợp lệ không. """