Python selen tìm hình ảnh

Nếu bạn muốn đào tạo một mô hình dựa trên các loại hình ảnh khác nhau, bạn sẽ cần thu được rất nhiều hình ảnh. Bạn có thể lấy hình ảnh theo cách thủ công nhưng điều đó sẽ đòi hỏi nhiều thời gian và công sức. Một cách hiệu quả hơn để lấy hình ảnh là cạo hình ảnh từ các trang web. Quét web cung cấp một cách dễ dàng để có được một lượng lớn dữ liệu trong một khoảng thời gian tương đối ngắn

Trong bài viết này, chúng tôi sẽ tạo một tập lệnh sẽ quét một trang web Google, trích xuất một số hình ảnh và tạo bộ dữ liệu. Các bước sau sẽ được thực hiện bằng Python và Selenium

1. Cài đặt gói Selenium

2. Nhập thư viện

3. Cài đặt trình điều khiển web

4. Khởi chạy Trình duyệt và Mở URL

5. Tải hình ảnh

6. Xem lại cấu trúc HTML của trang web

7. Tìm và trích xuất hình ảnh

8. Tải xuống hình ảnh

Cài đặt gói Selenium

!pip install selenium

Selenium là một thư viện python có thể tự động cạo dữ liệu trên các trang web. Nó cũng có thể được sử dụng để tự động hóa và thử nghiệm web. Cạo dữ liệu từ web chỉ là một phần nhỏ của thư viện selen. Một số tính năng của Selenium bao gồm

  • Khả năng tương thích đa trình duyệt
  • Hỗ trợ nhiều ngôn ngữ
  • Xử lý các phần tử web động
  • Dễ dàng xác định các phần tử web
  • Tốc độ và hiệu suất
  • Nguồn mở và Di động

Nhập thư viện

import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
import urllib
import time
  • yêu cầu cho phép bạn gửi yêu cầu HTTP đến máy chủ web trả về Đối tượng phản hồi với tất cả dữ liệu phản hồi [i. e. HTML]
  • webdriver điều khiển trình duyệt theo nhiều cách khác nhau như tải trang, chuyển sang các cửa sổ/khung khác nhau và nhận tiêu đề trang
  • urllib là gói chứa một số mô-đun để làm việc với các URL, chẳng hạn như mở và đọc url
  • chức năng thời gian được sử dụng để đếm số giây đã trôi qua kể từ kỷ nguyên

Cài đặt trình điều khiển web

!apt-get update 
!apt install chromium-chromedriver

chrome_options = webdriver.ChromeOptions[]
chrome_options.add_argument['--headless']
chrome_options.add_argument['--no-sandbox']
chrome_options.add_argument['--disable-dev-shm-usage']
driver = webdriver.Chrome['chromedriver',chrome_options=chrome_options]

Trình điều khiển web là thành phần chính của Selenium. Trình điều khiển web là một khung tự động hóa trình duyệt hoạt động với các API nguồn mở. Khung hoạt động bằng cách chấp nhận các lệnh, gửi các lệnh đó tới trình duyệt và tương tác với các ứng dụng

Selenium hỗ trợ nhiều trình duyệt web và cung cấp trình điều khiển web cho từng trình duyệt. Tôi đã nhập trình điều khiển web chrome từ selen. Ngoài ra, bạn có thể tải xuống trình điều khiển web cho trình duyệt cụ thể của mình và lưu trữ ở vị trí có thể dễ dàng truy cập [C. \users\webdriver\chromedriver. exe]. Bạn có thể tải xuống trình điều khiển web cho trình duyệt của mình từ liên kết này

Khởi chạy Trình duyệt và Mở URL

Tạo biến url chứa trang web để tìm kiếm hình ảnh trên Google

url = ["//www.google.com/search?q={s}&tbm=isch&tbs=sur%3Afc&hl=en&ved=0CAIQpwVqFwoTCKCa1c6s4-oCFQAAAAAdAAAAABAC&biw=1251&bih=568"]

Khởi chạy trình duyệt và mở url đã cho trong webdriver của bạn. Chúng tôi định dạng url trong tìm kiếm của mình bằng cách thêm một từ tìm kiếm vào vị trí của “s”. Trong trường hợp này, chúng tôi đã định dạng giá trị của s là “Pets”

driver.get[url.format[s='Pets']]

Tải hình ảnh

Chức năng tập lệnh thực thi sẽ cuộn xuống phần thân của trang web và tải hình ảnh. Chức năng này sẽ đảm bảo rằng mỗi khi chúng tôi tải một trang, nó sẽ đi đến cuối trang web. Chúng tôi đã đưa ra 5 giây để tải hình ảnh nhằm cung cấp đủ thời gian hiển thị hình ảnh

driver.execute_script["window.scrollTo[0,document.body.scrollHeight];"]
time.sleep[5]

Xem lại cấu trúc HTML của trang web

Chúng ta cần hiểu cấu trúc và nội dung của các thẻ HTML và tìm một thuộc tính duy nhất chỉ dành cho hình ảnh. Đối với dự án này, chúng tôi sẽ sử dụng kết quả tìm kiếm cho trang web thú cưng trong Google [hiển thị bên dưới]. Bạn có thể tìm thấy trang web này bằng cách chọn liên kết này

Bây giờ chúng ta sẽ đi đến url và tìm các thuộc tính có liên quan đến hình ảnh. Truy cập trang web và nhấp chuột phải vào bất kỳ đâu trên trang web, chọn kiểm tra từ danh sách thả xuống, nhấp vào biểu tượng mũi tên ở phía trên bên trái của màn hình có mã HTML, sau đó nhấp vào một hình ảnh trên trang web. Điều này sẽ dẫn đến màn hình sau được hiển thị

Trên màn hình HTML, bạn sẽ thấy dòng HTML được đánh dấu có chứa các thuộc tính liên quan đến hình ảnh được chọn. Chúng tôi thấy rằng class = “rg_i Q4LuWd”

Nếu bạn di chuyển con trỏ qua các hình ảnh khác trên trang web, bạn sẽ thấy một mẫu trong đó tất cả các lớp chứa các giá trị “Q4LuWd”

Vì vậy, chúng tôi muốn tìm và trích xuất các đối tượng trong đó lớp chứa các giá trị “Q4LuWd”

Tìm và trích xuất hình ảnh

Chúng tôi sẽ sử dụng hàm find_elements_by_xpath[] để xác định hình ảnh

imgResults = driver.find_elements[By.XPATH,"//img[contains[@class,'Q4LuWd']]"]

Tất cả các hình ảnh chứa “Q4LuWD” trong tên lớp hiện được lưu trữ trong imgResults, một đối tượng Selenium. Nếu bạn hiển thị imgResults, bạn sẽ chỉ thấy mô tả về đối tượng Selenium

Bây giờ chúng ta cần tải xuống hình ảnh. Để truy xuất một hình ảnh, chúng ta cần truy cập thuộc tính “src”. Giá trị của thuộc tính src là một URL sẽ mở hình ảnh trên một trang mới, nơi chúng tôi sẽ sử dụng các hàm python để tải xuống hình ảnh

Chúng tôi sẽ sử dụng image_object. hàm get_attribute[‘src’] để truy cập thuộc tính scr. Hàm get_attribute trả về giá trị thuộc tính của tham số được gửi dưới dạng đối số

src = []
for img in imgResults:
src.append[img.get_attribute['src']]

Danh sách cung chứa danh sách các URL hình ảnh. Bây giờ chúng ta sẽ xem qua danh sách và sử dụng chức năng python để tải xuống hình ảnh

Tải xuống hình ảnh

________số 8

Vòng lặp sẽ chạy 10 lần và tải xuống 10 hình ảnh vào thư mục tệp của bạn. Bạn có thể chỉ định một số cao hơn nếu bạn cần thêm hình ảnh

urllib. yêu cầu. hàm urlretreive[] có hai đối số. Đầu tiên là một URL và thứ hai là đường dẫn tệp mà bạn muốn lưu trữ hình ảnh đã tải xuống. Mỗi hình ảnh sẽ được lưu trữ trong một tập tin riêng biệt

Các hình ảnh đã tải xuống được lưu trữ trong thư mục tệp được chỉ định của bạn

Chúng tôi đã kết hợp các tệp hình ảnh thành một tệp PDF duy nhất được hiển thị bên dưới

Để tất cả chúng cùng nhau…

# Install selenium 
!pip install selenium
# Import the libraries.
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
import urllib
import time
# Install the chrome web driver from selenium.
!apt-get update
!apt install chromium-chromedriver

chrome_options = webdriver.ChromeOptions[]
chrome_options.add_argument['--headless']
chrome_options.add_argument['--no-sandbox']
chrome_options.add_argument['--disable-dev-shm-usage']
driver = webdriver.Chrome['chromedriver',chrome_options=chrome_options]
# Create url variable containing the webpage for a Google image search.
url = ["//www.google.com/search?q={s}&tbm=isch&tbs=sur%3Afc&hl=en&ved=0CAIQpwVqFwoTCKCa1c6s4-oCFQAAAAAdAAAAABAC&biw=1251&bih=568"]
# Launch the browser and open the given url in the webdriver.
driver.get[url.format[s='Pets']]
# Scroll down the body of the web page and load the images.
driver.execute_script["window.scrollTo[0,document.body.scrollHeight];"]
time.sleep[5]
# Find the images.
imgResults = driver.find_elements[By.XPATH,"//img[contains[@class,'Q4LuWd']]"]
# Access and store the scr list of image url's.
src = []
for img in imgResults:
src.append[img.get_attribute['src']]
# Retrieve and download the images.
for i in range[10]: urllib.request.urlretrieve[str[src[i]],"sample_data/pets{}.jpg".format[i]]

Bài viết này cho thấy cách bạn có thể dễ dàng cạo và chụp ảnh trên một trang web

Cảm ơn rất nhiều vì đã đọc bài viết của tôi. Nếu bạn có bất kỳ nhận xét hoặc phản hồi nào, vui lòng thêm chúng bên dưới

Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Tư cách thành viên cho phép bạn truy cập không giới hạn vào tất cả các bài viết trên Medium. Bạn có thể đăng ký bằng liên kết này https. //Trung bình. com/@dnigg/thành viên

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Kiểm tra Sự bất hòa trong cộng đồng của chúng tôi và tham gia Tập thể tài năng của chúng tôi

Chủ Đề