Chúng tôi sẽ áp dụng phương pháp đầu tiên trong phần này. Chúng tôi sẽ sử dụng phản hồi. đối tượng thô để lấy dữ liệu hình ảnh và sau đó sao chép nó vào một tệp bằng thư viện đóng cửa Python
Để tải xuống một Hình ảnh bằng cách sử dụng Thư viện yêu cầu Hãy làm theo các bước sau
- yêu cầu nhập khẩu và thư viện đóng cửa
- Thực hiện một yêu cầu GET tới URL
- Mở tệp và Đặt nội dung thô của Hình ảnh vào đó
Dưới đây là một ví dụ tải xuống hình ảnh từ một URL bằng thư viện yêu cầu
import requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download.png'
r = requests.get[img_url, stream=True]
if r.status_code == 200:
with open[path, 'wb'] as f:
r.raw.decode_content = True
shutil.copyfileobj[r.raw, f]
print['Image Downloaded Successfully']
Phương pháp số 2. Tải xuống hình ảnh bằng thư viện yêu cầu trong Python
Để tải xuống một hình ảnh bằng thư viện yêu cầu, chúng tôi cần đặt nó vào một số tệp, vì vậy chúng tôi sẽ sử dụng mô-đun Shutil cùng với thư viện yêu cầu. Chúng tôi sẽ tạo một yêu cầu HTTP bằng thư viện yêu cầu và sau đó tải xuống một tệp
import requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download1.png'
response = requests.get[img_url, stream=True]
with open['img.png', 'wb'] as out_file:
shutil.copyfileobj[response.raw, out_file]
del response
Phương pháp số 3. Tải xuống hình ảnh bằng thư viện yêu cầu Python
Trong phương pháp này, chúng ta sẽ sử dụng phản hồi. nội dung và đặt nó vào một tệp bằng hàm write[] tích hợp. Hàm write[] dùng để ghi dữ liệu vào file. Xem ví dụ sau để tải ảnh bằng Python
import requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download2.png'
response = requests.get[img_url]
if response.status_code == 200:
with open[path, 'wb'] as f:
f.write[response.content]
Phương pháp số 4. Sử dụng các yêu cầu và Thư viện PIL trong Python để tải xuống tệp
Cách tốt nhất để tải xuống hình ảnh từ nguồn trực tuyến là sử dụng thư viện yêu cầu cùng với thư viện PIL. Thư viện PIL được sử dụng để Thao tác hình ảnh. Thư viện PIL là một trong những Thư viện thao tác hình ảnh python tốt nhất
import requests
from PIL import Image
r = requests.get['//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png', stream=True]
r.raise_for_status[]
r.raw.decode_content = True
with Image.open[r.raw] as img:
img.show[]
r.close[]
Hướng dẫn nhanh về thư viện yêu cầu Python
Dưới đây là một số trường hợp sử dụng mô-đun yêu cầu python. Tôi hy vọng bạn sẽ thích chúng
Ví dụ số 1. Sử dụng thư viện yêu cầu để tải tệp lên máy chủ
import requests
files=[['file', open['client.py']]]
URL = '//0.0.0.0:8080/test'
r = requests.post[URL, files=files]
print[r.text]
Bài viết liên quan.
- Nhận giá trị hàng đầu tiên của một cột nhất định trong Pandas
- Mở trình duyệt web bằng Python
- Thay đổi kích thước phông chữ trên một ô matplotlib
Trò chuyện với tôi
Tôi hy vọng bạn thích Hướng dẫn Python này💗. Bây giờ, đừng ngần ngại để lại tin nhắn tại haxratali0@gamil. com. Tôi trả lời mọi thư tôi nhận được. tôi sẽ rất vui được trò chuyện với bạn
Gần đây, tôi đang làm việc với một hệ thống từ xa và cần tải xuống một số hình ảnh mà mã của tôi cuối cùng sẽ xử lý
Tôi có thể đã sử dụng curl hoặc wget trên thiết bị đầu cuối của mình để tải xuống các tệp. Tuy nhiên, tôi muốn toàn bộ quy trình được tự động hóa cho người dùng cuối
Điều này dẫn tôi đến câu hỏi
Làm cách nào tôi có thể tải xuống Hình ảnh bằng Python?
Trong hướng dẫn này, tôi sẽ đề cập đến một số mô-đun có thể được sử dụng để tải xuống các tệp trong Python [cụ thể là hình ảnh]. Các mô-đun được bảo hiểm là. yêu cầu, wget và urllib
từ chối trách nhiệm. Không tải xuống hoặc sử dụng bất kỳ hình ảnh nào vi phạm điều khoản bản quyền của nó
Cài đặt
Mã được sử dụng trong hướng dẫn này đã được thử nghiệm trên hệ thống Ubuntu với Python 3. 6. 9 cài đặt
Tôi thực sự khuyên bạn nên thiết lập một môi trường ảo với tất cả các thư viện cần thiết để thử nghiệm. Đây là cách bạn có thể làm điều đó
$ virtualenv image_download
$ source ./image_download/bin/activate
$ pip3 install requests wget
Hình ảnh mà chúng tôi sẽ sử dụng trong hướng dẫn nằm ở đây. Nó miễn phí cho mục đích thương mại và không yêu cầu bất kỳ sự ghi công nào
Hình ảnh được cung cấp bởi Sean Wareing từ Pixabay
URL hình ảnh mà chúng tôi sẽ sử dụng để tải xuống sẽ là
//cdn.pixabay.com/photo/2020/02/06/09/39/summer-4823612_960_720.jpg
Chúng tôi sẽ tạo một tập lệnh ngắn để tải xuống hình ảnh từ một URL nhất định
Tập lệnh sẽ tải xuống hình ảnh liền kề với tệp tập lệnh và tùy chọn, giữ nguyên tên tệp gốc
Mô-đun yêu cầu
Yêu cầu là một thư viện HTTP gọn gàng và thân thiện với người dùng trong Python. Nó giúp gửi HTTP/1. 1 yêu cầu cực kỳ đơn giản
Đây dường như là phương pháp ổn định nhất và được đề xuất để tải xuống bất kỳ loại tệp nào bằng Python
Nguồn. GiphyĐây là toàn bộ mã
Đừng lo lắng. Hãy chia nhỏ từng dòng một
Chúng tôi sẽ bắt đầu bằng cách nhập các mô-đun cần thiết và cũng sẽ đặt URL hình ảnh
import requests # to get image from the web
import shutil # to save it locallyimage_url = "//cdn.pixabay.com/photo/2020/02/06/09/39/summer-4823612_960_720.jpg"
Chúng tôi sử dụng ký hiệu lát cắt để tách tên tệp khỏi liên kết hình ảnh. Chúng tôi chia URL hình ảnh bằng cách sử dụng dấu gạch chéo [
import requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download1.png'
response = requests.get[img_url, stream=True]
with open['img.png', 'wb'] as out_file:
shutil.copyfileobj[response.raw, out_file]
del response
2] và sau đó sử dụng import requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download1.png'
response = requests.get[img_url, stream=True]
with open['img.png', 'wb'] as out_file:
shutil.copyfileobj[response.raw, out_file]
del response
3 để cắt đoạn cuối cùng________số 8Phương thức
import requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download1.png'
response = requests.get[img_url, stream=True]
with open['img.png', 'wb'] as out_file:
shutil.copyfileobj[response.raw, out_file]
del response
4 từ mô-đun yêu cầu sẽ được sử dụng để truy xuất hình ảnhr = requests.get[image_url, stream = True]
Sử dụng
5 để đảm bảo không bị gián đoạnimport requests import shutil img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png' path = 'download1.png' response = requests.get[img_url, stream=True] with open['img.png', 'wb'] as out_file: shutil.copyfileobj[response.raw, out_file] del response
Bây giờ, chúng tôi sẽ tạo tệp cục bộ ở chế độ ghi nhị phân và sử dụng phương pháp
//cdn.pixabay.com/photo/2020/02/06/09/39/summer-4823612_960_720.jpg
0 để ghi hình ảnh của chúng tôi vào tệpimport requests
import shutil
img_url = '//file-examples.com/storage/fefbfe84f862d721699d168/2017/10/file_example_PNG_500kB.png'
path = 'download1.png'
response = requests.get[img_url, stream=True]
with open['img.png', 'wb'] as out_file:
shutil.copyfileobj[response.raw, out_file]
del response
1Chúng tôi cũng có thể thêm một số điều kiện nhất định để kiểm tra xem hình ảnh đã được truy xuất thành công hay chưa bằng cách sử dụng Mã trạng thái của Yêu cầu
Chúng tôi cũng có thể cải thiện hơn nữa bằng cách thêm các thanh tiến trình trong khi tải xuống các tệp lớn hoặc một số lượng lớn tệp. đây là một ví dụ tốt
Yêu cầu là phương pháp được đề xuất và ổn định nhất để tải xuống bất kỳ loại tệp nào bằng Python
Mô-đun Wget
Ngoài mô-đun yêu cầu python, chúng tôi cũng có thể sử dụng để tải xuống
Đây là con trăn tương đương với GNU wget
Nó khá đơn giản để sử dụng
Nguồn. Tác giảMô-đun urllib
Thư viện Python tiêu chuẩn để truy cập các trang web thông qua chương trình của bạn là urllib. Nó cũng được sử dụng bởi mô-đun yêu cầu
Thông qua urllib, chúng ta có thể làm nhiều việc khác nhau. truy cập trang web, tải xuống dữ liệu, phân tích dữ liệu, gửi yêu cầu GET và POST
Chúng tôi có thể tải xuống hình ảnh của mình chỉ bằng một vài dòng mã
Chúng tôi đã sử dụng phương pháp sao chép tài nguyên web cần thiết vào một tệp cục bộ
Điều quan trọng cần lưu ý là trên một số hệ thống và nhiều trang web, đoạn mã trên sẽ dẫn đến lỗi. Lỗi HTTP. Lỗi HTTP 403. Cấm
Điều này là do rất nhiều trang web không đánh giá cao các chương trình ngẫu nhiên truy cập dữ liệu của họ. Một số chương trình có thể tấn công máy chủ bằng cách gửi một số lượng lớn yêu cầu. Điều này ngăn máy chủ hoạt động
Đây là lý do tại sao các trang web này có thể
- Chặn bạn và bạn sẽ nhận được Lỗi HTTP 403
- Gửi cho bạn dữ liệu khác hoặc NULL
Chúng tôi có thể khắc phục điều này bằng cách sửa đổi tác nhân người dùng, một biến được gửi cùng với yêu cầu của chúng tôi. Theo mặc định, biến này cho trang web biết rằng khách truy cập là một chương trình python
Bằng cách sửa đổi biến này, chúng tôi có thể hành động như thể trang web đang được truy cập trên một trình duyệt web tiêu chuẩn bởi một người dùng bình thường
Bạn có thể đọc thêm về nó ở đây
Phần kết luận
Yêu cầu đã trở thành cách thực tế để tải xuống mọi thứ trong Python
Ngay cả trang tài liệu urllib cũng khuyến nghị Yêu cầu giao diện máy khách HTTP cấp cao hơn
Nếu bạn muốn có ít phụ thuộc hơn trong chương trình của mình, bạn nên truy cập urllib. Nó là một phần của các thư viện tiêu chuẩn. Vì vậy, không cần phải tải xuống