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ố 8Vò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