Як скрапити Google Images за допомогою Python
Зображення є важливою частиною сучасного бізнесу, чи то для машинне навчання, створення контенту, цифровий маркетинг або дослідження. Компанії в різних галузях потребують великі набори зображень для навчання ШІ-моделі, аналізу трендів або збагачення свого контенту. Ручне збирання цих зображень потребує багато часу, і саме тут у гру входить Google Image Scraping.
У цьому посібнику ми розглянемо, як скрапити Google Images за допомогою Python, використовуючи різні методи, зокрема requests, BeautifulSoup, і Selenium. Додатково ми представимо простішу та ефективнішу альтернативу —Google Image Search API— для безперебійного вилучення зображень у масштабі.
Налаштування вашого середовища Python для вебскрапінгу
Перш ніж почати писати код, встановімо необхідні бібліотеки для вебскрапінгу Google Images.
Встановіть потрібні бібліотеки Python
Відкрийте термінал або командний рядок і встановіть такі пакети:
pip install requests
pip install beautifulsoup4
pip install selenium
pip install pillow
pip install webdriver-manager
Що роблять ці бібліотеки?
requests– Отримує HTML-вміст вебсторінок.BeautifulSoup4– Аналізує HTML і витягує корисну інформацію, наприклад URL-адреси зображень.Selenium– Автоматизує взаємодію з браузером для вебскрапінгу динамічного контенту.Pillow– Обробляє зображення та їх зберігання.webdriver-manager– Автоматично керує встановленням WebDriver для Selenium.
Інспектування Google Images для вебскрапінгу
Перш ніж писати скрапер, давайте переглянемо результати Google Image Search, щоб зрозуміти, як завантажуються зображення.
Кроки для перегляду Google Images
- Open Google Images and search for a keyword (e.g., “sunset images”).
- Клацніть зображення правою кнопкою миші та виберіть Inspect (або натисніть
Ctrl Shift Iу Chrome). - Знайдіть
тег. URL-адреси зображень зберігаються вsrcordata-srcattributes. - Прокрутіть вниз, щоб побачити, як Google довантажує більше зображень динамічно за допомогою JavaScript.
Оскільки зображення завантажуються динамічно, нам потрібно Selenium щоб прокрутити вниз і витягти всі URL-адреси зображень.
Спосіб 1: вебскрапінг Google Images за допомогою BeautifulSoup
Найпростіший спосіб скрапити зображення — це отримати HTML-вміст і витягнути
Python Code for Scraping Static Google Images
import requests
from bs4 import BeautifulSoup
import os
# Define the search query
query = "зображення заходу сонця"
search_url = f"https://www.google.com/search?q={query}&tbm=isch"
# Set headers to mimic a real browser
headers = {"User-Agent": "Mozilla/5.0"}
# Fetch the page content
response = requests.get(search_url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
# Extract image URLs
image_tags = soup.find_all("img")
# Create directory to store images
os.makedirs("images", exist_ok=True)
# Download and save images
for i, img in enumerate(image_tags):
img_url = img.get("src")
if img_url:
img_data = requests.get(img_url).content
with open(f"images/image_{i}.jpg", "wb") as f:
f.write(img_data)
print("Зображення успішно завантажено!")
Обмеження цього підходу
- Google динамічно завантажує зображення за допомогою JavaScript, що
requestsсамостійно не впорається. - Many images are stored as thumbnails; high-resolution versions need additional requests.
Щоб подолати ці обмеження, ми використовуємо Selenium.
Оскільки Google Images використовує ліниве завантаження (завантаження зображень під час прокручування сторінки користувачем), нам потрібно Selenium щоб прокручувати вниз і витягувати URL-адреси зображень у повній роздільній здатності.
Python Code for Scraping Images with Selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
import os
# Set up Selenium WebDriver
options = webdriver.ChromeOptions()
options.add_argument("--headless") # Run in headless mode
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# Define search query
query = "зображення заходу сонця"
search_url = f"https://www.google.com/search?q={query}&tbm=isch"
# Open Google Images
driver.get(search_url)
time.sleep(2) # Wait for images to load
# Scroll down multiple times to load more images
for _ in range(5):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
# Extract image URLs
image_elements = driver.find_elements(By.CSS_SELECTOR, "img")
image_urls = [img.get_attribute("src") for img in image_elements if img.get_attribute("src")]
# Create directory and save images
os.makedirs("selenium_images", exist_ok=True)
for i, img_url in enumerate(image_urls):
img_data = requests.get(img_url).content
with open(f"selenium_images/image_{i}.jpg", "wb") as f:
f.write(img_data)
print("Зображення успішно завантажено!")
driver.quit()
Переваги використання Selenium
- Handles зображення, відрендерені JavaScript.
- Динамічно прокручує до завантажити більше зображень.
- Extracts high-resolution версії зображень.
Спосіб 3: вебскрапінг Google Images за допомогою «Google Image Search API»

Для цього уроку ми використаємо API пошуку зображень Google від Oxylabs щоб отримати зображення Google Images, пов’язані з певним запитом. Це скрапер зображень Google дозволяє нам отримувати URL-адреси зображень, заголовки, описи та сторінки, на яких розміщено ці зображення.
На відміну від ручних методів вебскрапінгу з використанням Selenium або BeautifulSoup, що може призвести до CAPTCHA та IP-блокування, API пошуку зображень Google від Oxylabs забезпечує безперебійне автоматизоване отримання зображень без блокування.
Крок 1 — Налаштування середовища
Щоб почати, переконайтеся, що у вас є Python 3.6 installed і запущені у вашій системі. Також нам потрібні такі бібліотеки для взаємодії з API та обробки результатів:
requests– Для надсилання HTTP-запитів до API Oxylabs.pandas– Для зберігання та структурування витягнутих даних про зображення.
Щоб установити ці пакети, виконайте таку команду:
pip install requests pandas
Крок 2 — Імпорт потрібних бібліотек
Створіть новий файл Python і імпортуйте потрібні бібліотеки:
import requests
import pandas as pd
Крок 3 — Формування payload для API
Oxylabs’ Google Image Search API дозволяє користувачам налаштовувати пошукові запити за допомогою різних параметрів. Наведена нижче структура payload допомагає нам отримувати релевантні зображення:
payload = {
"source": "google_images",
"domain": "com",
"query": "sunset",
"parse": "true",
"geo_location": "Сполучені Штати",
"context": [
{
"key": "search_operators",
"value": [
{"key": "filetype", "value": "jpg"},
{"key": "inurl", "value": "image"},
],
}
],
}
Розбір параметрів payload:
source: Визначає джерело даних (Google Images).domain: Встановлює домен Google (com,uk,de, тощо).query: Defines the search term (e.g.,"sunset").parse: Якщо встановленоtrue, результати повертаються у структурованому форматі JSON.geo_location: Restricts search results to a specific country (e.g.,"Сполучені Штати").context: Дає змогу застосувати пошукові фільтри.filetype: Limits results to a specific image format (e.g.,"jpg").inurl: Ensures images are stored under a specific URL structure (e.g.,"image").
Крок 4 — Надсилання запиту до API
Щоб отримати зображення, ми надсилаємо POST-запит до кінцевої точки API Oxylabs з обліковими даними автентифікації:
USERNAME = ""
PASSWORD = ""
response = requests.post(
"https://realtime.oxylabs.io/v1/queries",
auth=(USERNAME, PASSWORD),
json=payload
)
# Extract results
data = response.json()
Обов’язково замініть and з вашим облікові дані API Oxylabs.
Крок 5 — Витягування та збереження даних зображень
Відповідь містить структуровані дані про зображення, зокрема URL-адреси зображень, назви та описи. Ми витягуємо цю інформацію та зберігаємо її в Pandas DataFrame для зручної обробки.
# Extracting image details
results = data["results"][0]["content"]
image_results = results["results"]["organic"]
# Create a DataFrame to store the images
df = pd.DataFrame(columns=["Назва зображення", "Опис зображення", "URL зображення"])
for img in image_results:
title = img.get("title", Без назви)
description = img.get("desc", "Без опису")
url = img.get("url")
df = pd.concat(
[pd.DataFrame([[title, description, url]], columns=df.columns), df],
ignore_index=True,
)
# Save the data to CSV and JSON files
df.to_csv("google_images.csv", index=False)
df.to_json("google_images.json", orient="split", index=False)
print("Дані зображення успішно збережено!")
Крок 6 — Приклад сценарію використання
Let’s say we want to scrape images of cats from Google Images while ensuring that the search results are restricted to images hosted on Wikipedia. We can modify the query and context відповідно до параметрів:
payload = {
"source": "google_images",
"domain": "com",
"query": "https://upload.wikimedia.org/wikipedia/commons/a/a3/June_odd-eyed-cat.jpg",
"parse": "true",
"geo_location": "Сполучені Штати",
"context": [
{
"key": "search_operators",
"value": [
{"key": "site", "value": "wikipedia.org"},
{"key": "filetype", "value": "jpg"},
{"key": "inurl", "value": "image"},
],
}
],
}
The site Оператор пошуку гарантує, що результати походять лише з wikipedia.org. У filetype фільтр гарантує, що ми отримаємо зображень JPG.
Крок 7 — Перегляд і експорт даних
Після обробки запиту витягнуті дані зображення зберігаються в CSV і JSON у форматах для зручного доступу.

Why Use API пошуку зображень Google від Oxylabs?

Хоча методи вебскрапінгу на основі Python, що використовують Selenium і BeautifulSoup можуть працювати, але мають суттєві труднощі:
- блокування IP і CAPTCHA потребують постійного обходу.
- Динамічне завантаження Google робить вебскрапінг ненадійним.
- Часті зміни на сайті ламає вебскрапери, що потребує постійного супроводу.
Переваги API Oxylabs над ручним вебскрапінгом
- Обходить CAPTCHA та виявлення ботів — Не потрібні проксі чи розв’язувачі CAPTCHA.
- Scalable Solution — Обробляє масовий вебскрапінг зображень без IP-блокувань.
- Швидко та ефективно — Повертає зображення високої роздільної здатності з мінімальними затримками.
- Structured Data Output — Усуває потребу в ручному розборі HTML.
- Easy Integration — Простий POST-запити надає готові до використання результати.
Замість того, щоб перейматися захист Google від ботів, API пошуку зображень Google від Oxylabs надає без клопоту, масштабовано й законно спосіб ефективно виконувати вебскрапінг Google Images.
Final Thoughts
Вебскрапінг Google Images за допомогою Python — вдалий вибір, якщо ви використовуєте Selenium, BeautifulSoup та Requests, але це має обмеження. блокування IP, виклики CAPTCHA та проблеми з рендерингом JavaScript роблять ручний вебскрапінг затратно за часом і ненадійно.
Для швидшим, ефективнішим і масштабованим рішенням, API пошуку зображень Google від Oxylabs є найкращим вибором. З готових до використання структурованих результатів, доступу без CAPTCHA та повної автоматизації, це ідеальний інструмент для бізнесу та розробників, яким потрібні якісні дані зображень.

