Hướng dẫn how do you download multiple images in python? - làm thế nào để bạn tải xuống nhiều hình ảnh trong python?

Chỉ cần lặp qua các số hình ảnh và lấy từng số một.

import urllib.request

for i in range(92):
    import urllib
    f = open(f'{i+1}.jpg','wb')
    f.write(urllib.request.urlopen(f'https://image.slidesharecdn.com/marketinginternationalsept2013-150330215818-conversion-gate01/95/marketing-international-1{i+1}-638.jpg').read())
    f.close()

Đã trả lời ngày 21 tháng 11 năm 2021 lúc 18:07Nov 21, 2021 at 18:07

Hướng dẫn how do you download multiple images in python? - làm thế nào để bạn tải xuống nhiều hình ảnh trong python?

3

Giải pháp của bạn không hoạt động cho một số vấn đề. Vì vậy, tôi đã đi cho giải pháp này:

for i in list(range(1,92)): 
    link_1 = "image.slidesharecdn.com/…" name = str(i)+".jpg" 
    print(link_1, name) 
urllib.request.urlretrieve(link_1, name) 

Va no đa hoạt động! cảm ơn vì sự giúp đỡ -

Đã trả lời ngày 30 tháng 12 năm 2021 lúc 11:42Dec 30, 2021 at 11:42

Hướng dẫn how do you download multiple images in python? - làm thế nào để bạn tải xuống nhiều hình ảnh trong python?

Hiển thị tất cả các hình ảnh bằng cv2.imshow ().

  • Chờ nút bàn phím Nhấn bằng CV2.waitkey ().
    • Làm thế nào để bạn tải xuống tất cả các hình ảnh từ một trang web bằng Python?
    • Tạo thư mục riêng để tải xuống hình ảnh bằng phương thức MKDIR trong HĐH. Lặp lại thông qua tất cả các hình ảnh và nhận URL nguồn của hình ảnh đó ..Open URL
    • Nhận mã HTML ..Write to a file in binary mode
    • Nhận danh sách các thẻ IMG từ mã HTML bằng phương pháp Findall trong súp đẹp ..
  • Sau đây giải thích cách chỉ định URL của hình ảnh, zip, pdf hoặc tệp khác trên web trong Python, tải xuống và lưu nó dưới dạng tệp cục bộ.
  • Tải xuống hình ảnh bằng cách chỉ định URL.
    • Nếu số là tuần tự
    • Trích xuất với súp đẹp
  • Tải xuống hàng loạt hình ảnh từ một danh sách các URL

Nếu bạn có một danh sách các URL, bạn chỉ có thể biến nó thành một vòng lặp và gọi chức năng để tải xuống và lưu tệp với URL đầu tiên được hiển thị. Do danh sách URL tạm thời, chức năng gọi Download_Image_Dir () được nhận xét ở đây.

Để không quá tải máy chủ, tôi sử dụng Time.slege () để tạo thời gian chờ cho mỗi lần tải xuống hình ảnh. Đơn vị là trong vài giây, vì vậy trong ví dụ trên, mô -đun thời gian được nhập và sử dụng.

Làm thế nào để bạn tải xuống tất cả các hình ảnh từ một trang web bằng Python?

Tạo thư mục riêng để tải xuống hình ảnh bằng phương thức MKDIR trong HĐH. Lặp lại thông qua tất cả các hình ảnh và nhận URL nguồn của hình ảnh đó ..

import os
import pprint
import time
import urllib.error
import urllib.request

def download_file(url, dst_path):
    try:
        with urllib.request.urlopen(url) as web_file:
            data = web_file.read()
            with open(dst_path, mode='wb') as local_file:
                local_file.write(data)
    except urllib.error.URLError as e:
        print(e)
url = 'https://www.python.org/static/img/python-logo.png'
dst_path = 'data/temp/py-logo.png'
download_file(url, dst_path)

Để chỉ định thư mục đích và lưu tệp với tên tệp URL, hãy thực hiện các mục sau

def download_file_to_dir(url, dst_dir):
    download_file(url, os.path.join(dst_dir, os.path.basename(url)))

dst_dir = 'data/temp'
download_file_to_dir(url, dst_dir)

Nó trích xuất tên tệp từ url với os.path.basename () và kết hợp nó với thư mục được chỉ định với os.path.join () để tạo đường dẫn đích.

Các phần sau đây mô tả một phần của việc thu thập dữ liệu và phần lưu dữ liệu dưới dạng tệp.

Urllib.Request.Urlopen (): Mở URL

Sử dụng urllib.request.urropen () để mở URL và truy xuất dữ liệu. Lưu ý rằng urllib.urropen () đã được không dùng nữa trong Python 2.6 trở lên. Urllib.Request.urlretrieve () chưa được dùng nữa, nhưng có thể là trong tương lai.

  • Urllib.Request - Thư viện mở rộng để mở URL - Tài liệu Python 3.10.0

Để tránh dừng khi xảy ra ngoại lệ, hãy bắt lỗi với thử và ngoại trừ.

Trong ví dụ, urllib.error được nhập và chỉ urllib.error.urlerror được nắm bắt rõ ràng. Thông báo lỗi sẽ được hiển thị khi URL của tệp không tồn tại.

  • Urllib.Error - Các lớp ngoại lệ được nâng lên bởi Urllib.Request - Tài liệu Python 3.10.0
url_error = 'https://www.python.org/static/img/python-logo_xxx.png'
download_file_to_dir(url_error, dst_dir)
# HTTP Error 404: Not Found

Nếu bạn cũng muốn nắm bắt các trường hợp ngoại lệ (FilenotFounderror, v.v.)

for i in list(range(1,92)): 
    link_1 = "image.slidesharecdn.com/…" name = str(i)+".jpg" 
    print(link_1, name) 
urllib.request.urlretrieve(link_1, name) 
3

Cũng có thể sử dụng các yêu cầu thư viện của bên thứ ba thay vì Urllib thư viện tiêu chuẩn để mở URL và lấy dữ liệu.

Ghi vào một tệp ở chế độ nhị phân trong Open ()

Dữ liệu có thể thu được với urllib.request.urlopen () là một chuỗi byte (loại byte).

Open () với mode = 'wb' như đối số thứ hai ghi dữ liệu là nhị phân. W có nghĩa là viết và b có nghĩa là nhị phân.

Một ví dụ mã đơn giản hơn

Lồng nhau với các tuyên bố có thể được viết cùng một lúc, cách nhau bởi dấu phẩy.

  • 8. Báo cáo ghép - Tuyên bố với Tuyên bố - Tài liệu Python 3.10.0

Sử dụng điều này, chúng ta có thể viết như sau.

def download_file(url, dst_path):
    try:
        with urllib.request.urlopen(url) as web_file, open(dst_path, 'wb') as local_file:
            local_file.write(web_file.read())
    except urllib.error.URLError as e:
        print(e)

Tải xuống các tệp zip, tệp pdf, v.v.

Các ví dụ cho đến nay là để tải xuống và lưu các tệp hình ảnh, nhưng vì chúng tôi chỉ cần mở một tệp trên web và lưu nó dưới dạng tệp cục bộ, các chức năng tương tự có thể được sử dụng cho các loại tệp khác.

Bạn có thể tải xuống và lưu tệp bằng cách chỉ định URL.

url_zip = 'https://from-locas.com/sample_header.csv.zip'
download_file_to_dir(url_zip, dst_dir)

url_xlsx = 'https://from-locas/sample.xlsx'
download_file_to_dir(url_xlsx, dst_dir)

url_pdf = 'https://from-locas/sample1.pdf'
download_file_to_dir(url_pdf, dst_dir)

Lưu ý rằng URL được chỉ định trong chức năng này phải là một liên kết đến chính tệp.

Ví dụ: trong trường hợp tệp kho lưu trữ GitHub, URL sau có phần mở rộng PDF nhưng thực sự là một trang HTML. Nếu URL này được chỉ định trong hàm ở trên, nguồn HTML sẽ được tải xuống.

  • https://github.com/from-locals/python-snippets/blob/master/notebook/data/srx/pdf/sample1.pdf

Liên kết đến thực thể tệp là URL sau, bạn cần chỉ định nếu bạn muốn tải xuống và lưu tệp.

  • https://github.com/from-locals/python-snippets/raw/master/notebook/data/srx/pdf/sample1.pdf

Ngoài ra còn có trường hợp truy cập bị hạn chế bởi tác nhân người dùng, người giới thiệu, v.v., khiến nó không thể tải xuống. Chúng tôi không đảm bảo rằng tất cả các tệp sẽ được tải xuống.

Thật dễ dàng để sử dụng các yêu cầu để thay đổi hoặc thêm các tiêu đề yêu cầu như tác nhân người dùng.

Trích xuất URL của hình ảnh trên trang web.

Để tải xuống tất cả các hình ảnh trong một trang cùng một lúc, trước tiên hãy trích xuất các URL của hình ảnh và tạo một danh sách.

Nếu số là tuần tự

Nếu URL của hình ảnh bạn muốn tải xuống là một số tuần tự đơn giản, thì thật dễ dàng. Nếu các URL không chỉ là số tuần tự mà còn có một số tính đều đặn, thì việc lập danh sách các URL theo các quy tắc hơn là cào bằng súp đẹp (xem bên dưới).

Sử dụng ký hiệu hiểu biết.

  • Các bài viết liên quan: Sử dụng ký hiệu tổng hợp danh sách PythonUsing Python list comprehensions notation
url_list = ['https://example.com/basedir/base_{:03}.jpg'.format(i) for i in range(5)]
pprint.pprint(url_list)
# ['https://example.com/basedir/base_000.jpg',
#  'https://example.com/basedir/base_001.jpg',
#  'https://example.com/basedir/base_002.jpg',
#  'https://example.com/basedir/base_003.jpg',
#  'https://example.com/basedir/base_004.jpg']

Trong ví dụ trên, {: 03} được sử dụng cho số tuần tự không chứa 3 chữ số; {} được sử dụng khi không cần điền không và {: 05} được sử dụng cho số 5 chữ số thay vì 3 chữ số. Để biết thêm thông tin về phương thức định dạng của chuỗi Str, xem bài viết sau.

  • Các bài viết liên quan: Chuyển đổi định dạng ở Python, định dạng (không lấp đầy, ký hiệu theo cấp số nhân, thập lục phân, v.v.)Format conversion in Python, format (zero-filling, exponential notation, hexadecimal, etc.)

Ngoài ra, ở đây chúng tôi đang sử dụng pprint để làm cho đầu ra dễ đọc hơn.

Trích xuất với súp đẹp

Để trích xuất URL hình ảnh từ các trang web với số lượng lớn, hãy sử dụng súp đẹp.

import os
import time
import urllib.error
import urllib.request

from bs4 import BeautifulSoup

url = 'https://from-locals.com/'
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) '\
     'AppleWebKit/537.36 (KHTML, like Gecko) '\
     'Chrome/55.0.2883.95 Safari/537.36 '

req = urllib.request.Request(url, headers={'User-Agent': ua})
html = urllib.request.urlopen(req)

soup = BeautifulSoup(html, "html.parser")

url_list = [img.get('src') for img in soup.find(class_='list').find_all('img')]

Trong ví dụ, URL của hình ảnh hình thu nhỏ của trang web này được trích xuất.

Cấu trúc thay đổi tùy thuộc vào trang web, nhưng về cơ bản nó thu được như sau.

  • Nhận danh sách các đối tượng thẻ bằng cách chỉ định lớp, ID, v.v. của khối chứa nhiều hình ảnh bạn muốn tải xuống.
    • for i in list(range(1,92)): 
          link_1 = "image.slidesharecdn.com/…" name = str(i)+".jpg" 
          print(link_1, name) 
      urllib.request.urlretrieve(link_1, name) 
      
      4
  • Lấy URL của hình ảnh từ phần tử SRX hoặc phần tử SRC của thẻ.
    • for i in list(range(1,92)): 
          link_1 = "image.slidesharecdn.com/…" name = str(i)+".jpg" 
          print(link_1, name) 
      urllib.request.urlretrieve(link_1, name) 
      
      5

Mã mẫu trên chỉ là một ví dụ và không được đảm bảo hoạt động.

Tải xuống hàng loạt hình ảnh từ một danh sách các URL

Nếu bạn có một danh sách các URL, bạn chỉ có thể biến nó thành một vòng lặp và gọi chức năng để tải xuống và lưu tệp với URL đầu tiên được hiển thị. Do danh sách URL tạm thời, chức năng gọi Download_Image_Dir () được nhận xét ở đây.

for i in list(range(1,92)): 
    link_1 = "image.slidesharecdn.com/…" name = str(i)+".jpg" 
    print(link_1, name) 
urllib.request.urlretrieve(link_1, name) 
0

Để không quá tải máy chủ, tôi sử dụng Time.slege () để tạo thời gian chờ cho mỗi lần tải xuống hình ảnh. Đơn vị là trong vài giây, vì vậy trong ví dụ trên, mô -đun thời gian được nhập và sử dụng.

Ví dụ là dành cho các tệp hình ảnh, nhưng các loại tệp khác cũng có thể được tải xuống cùng nhau, miễn là chúng được liệt kê.

Hiển thị tất cả các hình ảnh bằng cv2.imshow ().

Tải xuống hình ảnh bằng cách chỉ định URL. Mã ví dụ. Urllib.Request.Urlopen (): Mở URL. Ghi vào một tệp ở chế độ nhị phân trong Open () ....
Tải xuống các tệp zip, tệp pdf, v.v.
Trích xuất URL của hình ảnh trên trang web. Nếu số là tuần tự. Trích xuất với súp đẹp ..
Tải xuống hàng loạt hình ảnh từ một danh sách các URL ..

Làm cách nào để tải xuống nhiều tệp trong Python?

Tải xuống nhiều tệp song song với Python để bắt đầu, hãy tạo một hàm (download_parallel) để xử lý tải xuống song song. Hàm (download_parallel) sẽ lấy một đối số, một URL có thể chứa các tên tệp và tên tệp được liên kết (biến đầu vào chúng tôi đã tạo trước đó).create a function ( download_parallel ) to handle the parallel download. The function ( download_parallel ) will take one argument, an iterable containing URLs and associated filenames (the inputs variable we created earlier).

Làm cách nào để nhập nhiều hình ảnh vào Python?

Approach..
Nhập mô -đun ..
Tải nhiều hình ảnh bằng CV2.Imread ().
Concatenate các hình ảnh bằng cách sử dụng incatenate (), với giá trị trục được cung cấp theo yêu cầu theo hướng ..
Hiển thị tất cả các hình ảnh bằng cv2.imshow ().
Chờ nút bàn phím Nhấn bằng CV2.waitkey ().

Làm thế nào để bạn tải xuống tất cả các hình ảnh từ một trang web bằng Python?

Tạo thư mục riêng để tải xuống hình ảnh bằng phương thức MKDIR trong HĐH.Lặp lại thông qua tất cả các hình ảnh và nhận URL nguồn của hình ảnh đó ...
Nhập mô -đun ..
Tải nhiều hình ảnh bằng CV2.Imread ().
Concatenate các hình ảnh bằng cách sử dụng incatenate (), với giá trị trục được cung cấp theo yêu cầu theo hướng ..