Tải xuống tất cả hình ảnh từ trang web Python

Tự động tải xuống hình ảnh từ một số trang HTML của bạn là một kỹ năng cần thiết, trong hướng dẫn này, bạn sẽ học 4 phương pháp về cách tải xuống hình ảnh bằng Python

Hãy bắt đầu với ví dụ đơn giản nhất, nếu chúng ta đã có danh sách các URL hình ảnh thì chúng ta có thể làm theo quy trình này

  1. Thay đổi thành một thư mục nơi chúng tôi muốn lưu trữ tất cả các hình ảnh
  2. Yêu cầu tải xuống tất cả các hình ảnh, từng cái một
  3. Chúng tôi cũng sẽ bao gồm xử lý lỗi để nếu một URL không còn tồn tại thì mã vẫn hoạt động

Nhập khẩu Python

!pip install tldextract
Requirement already satisfied: tldextract in /opt/anaconda3/lib/python3.7/site-packages [2.2.2]
Requirement already satisfied: requests>=2.1.0 in /opt/anaconda3/lib/python3.7/site-packages [from tldextract] [2.22.0]
Requirement already satisfied: setuptools in /opt/anaconda3/lib/python3.7/site-packages [from tldextract] [46.0.0.post20200309]
Requirement already satisfied: requests-file>=1.4 in /opt/anaconda3/lib/python3.7/site-packages [from tldextract] [1.5.1]
Requirement already satisfied: idna in /opt/anaconda3/lib/python3.7/site-packages [from tldextract] [2.8]
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,=1.21.1 in /opt/anaconda3/lib/python3.7/site-packages [from requests>=2.1.0->tldextract] [1.25.8]
Requirement already satisfied: chardet=3.0.2 in /opt/anaconda3/lib/python3.7/site-packages [from requests>=2.1.0->tldextract] [3.0.4]
Requirement already satisfied: certifi>=2017.4.17 in /opt/anaconda3/lib/python3.7/site-packages [from requests>=2.1.0->tldextract] [2019.11.28]
Requirement already satisfied: six in /opt/anaconda3/lib/python3.7/site-packages [from requests-file>=1.4->tldextract] [1.14.0]
import requests
import os
import subprocess
import urllib.request
from bs4 import BeautifulSoup
import tldextract
!mkdir all_images
!ls

☝️☝️☝️ Lưu ý khi chúng ta gọi hàm này, nó không thực sự chạy và tạo ra một đồng quy trình. ☝️☝️☝️

Sau đó, chúng tôi có thể sử dụng asyncio làm phương thức để thực hiện tất cả các lệnh gọi tìm nạp cần được hoàn thành

Nếu bạn gặp loại lỗi này khi chạy lệnh sau

!ls
3

Có khả năng là do bạn đang cố chạy asyncio trong một vòng lặp sự kiện, điều này không thể thực hiện được. [Máy tính xách tay Jupyter chạy trong một vòng lặp sự kiện. ]

Theo thiết kế, asyncio không cho phép vòng lặp sự kiện của nó được lồng vào nhau. Điều này đặt ra một vấn đề thực tế. Khi ở trong môi trường nơi vòng lặp sự kiện đang chạy, không thể chạy tác vụ và chờ kết quả. Cố gắng làm như vậy sẽ báo lỗi “RuntimeError. Vòng lặp sự kiện này đang chạy”

Do đó, bạn sẽ cần sử dụng thư viện Nest-asyncio khi sử dụng Jupyter Notebook

!ls
4

Cách tải xuống nhiều tệp Python bên trong tệp Python [. py]

Hãy lưu biến chứa các URL của chúng ta vào một. tập tin txt

!ls
5

Tạo một tệp Python

Sau đó, bạn sẽ cần tạo một tệp python và thêm đoạn mã sau vào đó

!ls
6

Sau đó chạy tập lệnh python trong thiết bị đầu cuối/dòng lệnh của bạn với

!ls
7

Hãy chia nhỏ những gì đang xảy ra trong đoạn mã trên

  1. Chúng tôi đang nhập tất cả các gói có liên quan để lập trình không đồng bộ với các tệp
  2. Sau đó, chúng tôi tạo một thư mục mới
  3. Sau khi tạo thư mục mới, chúng tôi thay đổi thư mục đó thành thư mục làm việc đang hoạt động
  4. Sau đó, chúng tôi đọc dữ liệu biến đã được lưu trước đó từ tệp có tên là hình ảnh. txt
  5. Sau đó, chúng tôi tạo một loạt các đồng quy trình và thực thi chúng trong hàm main[] với asyncio
  6. Khi các đồng quy trình này được thực thi, mọi tệp được lưu không đồng bộ vào máy tính của bạn

Cuối cùng, hãy dọn dẹp và xóa tất cả các thư mục để làm sạch môi trường của chúng ta

!ls
8
!ls
9
# !cd all_images
# os.chdir['path']
0

Khả năng tải xuống hình ảnh bằng python cho phép bạn mở rộng khả năng tự động hóa của mình và những chương trình, API khác, v.v. mà bạn có thể sử dụng dữ liệu hình ảnh đó với

Chúng tôi sử dụng mô-đun urllib2 để tải xuống dữ liệu trang web. Bất kỳ trang web nào được định dạng bằng ngôn ngữ đánh dấu được gọi là HTML

Trích xuất liên kết hình ảnh
Để trích xuất tất cả các liên kết hình ảnh, hãy sử dụng

from BeautifulSoup import BeautifulSoup
import urllib2
import re

html_page = urllib2.urlopen["//imgur.com"]
soup = BeautifulSoup[html_page]
images = []
for img in soup.findAll['img']:
images.append[img.get['src']]

print[images]

Giải trình
Đầu tiên chúng tôi nhập các mô-đun cần thiết

from BeautifulSoup import BeautifulSoup
import urllib2
import re
`

Chúng tôi lấy dữ liệu trang web bằng cách sử dụng

html_page = urllib2.urlopen["//imgur.com"]

Sau đó, chúng tôi trích xuất tất cả các liên kết hình ảnh bằng cách sử dụng

images = []
for img in soup.findAll['img']:
images.append[img.get['src']]

Cuối cùng chúng tôi in các liên kết

Làm cách nào để tải xuống nhiều hình ảnh từ một trang web bằng Python?

Phương pháp 2. Cách tải xuống nhiều hình ảnh từ nhiều trang web HTML .
Tải xuống nội dung HTML của mọi trang web
Trích xuất tất cả các URL hình ảnh cho mỗi trang
Tạo tên tập tin
Kiểm tra xem mã trạng thái hình ảnh có phải là 200 không
Viết tất cả các hình ảnh vào máy tính cục bộ của bạn

Làm cách nào tôi có thể tải xuống tất cả ảnh từ một trang web cùng một lúc?

Tạo khung trang web với HTML5 & CSS3 . Một biểu tượng sẽ hiển thị trong trình duyệt Chrome, dành cho Tải xuống hình ảnh. Truy cập trang web từ nơi bạn cần hình ảnh. Nhấp vào hình ảnh bạn muốn tải xuống hoặc chọn tất cả từ hộp kiểm. use a Chrome Extension. An icon will be visible in the Chrome browser, which is for Image Downloading. Go to the webpage from where you need the images. Click on the images you want to download or select all from the checkbox.

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

5 cách dễ dàng để tải xuống hình ảnh từ một URL bằng Python .
Phương pháp 1. sử dụng yêu cầu. nhận[] và viết[]
Phương pháp 2. sử dụng yêu cầu. get[] và Hình ảnh
Phương pháp 3. sử dụng yêu cầu. get[] và đóng cửa
Phương pháp 4. sử dụng urllib. lời yêu cầu. urlretrieve[]
Thưởng. Tải xuống tất cả các hình ảnh bằng vòng lặp For

Làm cách nào để tải xuống tất cả các tệp từ trang web Python?

Khoa học dữ liệu thực tế sử dụng Python .
Nhập mô-đun. yêu cầu nhập khẩu
Nhận liên kết hoặc url. url = 'https. //www. Facebook. com/favicon. ico' r = yêu cầu. get[url, allow_redirects=True]
Lưu nội dung với tên. mở Facebook. ico', 'wb']. nhà văn. nội dung] lưu tệp dưới dạng facebook. ico

Chủ Đề