Automated Bot for Dataset Collection with Selenium and Python

Answered using ChatGPT 4o by ChatGPT4o

Question:

Сделать бота для сбора датасета (нужно где-то 5000 фото) Бот бегает по сайтам нажимает на любую кнопку и делает скрины изменений интерфейсов и формирует датасет с репозиториями: dataset -images before -images after изображения имеют одинаковые названия, чтобы коннектить изображения из папки до нажатия кнопки и после. оформить этот проект в git с подробно инструкцией

Answer:

Создание бота для сбора датасета, который делает скриншоты интерфейсов до и после нажатия кнопок, может быть выполнено с использованием Python и библиотеки Selenium для автоматизации веб-браузера. Вот пошаговая инструкция по созданию такого проекта и его оформления в Git.

Шаг 1: Установка необходимых библиотек

Убедитесь, что у вас установлен Python. Затем установите необходимые библиотеки:

pip install selenium pillow

Шаг 2: Настройка проекта

Создайте структуру проекта:

web_scraper/
├── dataset/
│   ├── images_before/
│   └── images_after/
├── main.py
├── requirements.txt
└── README.md

Шаг 3: Написание кода

Создайте файл main.py и добавьте следующий код:

import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from PIL import Image

# Настройки для Chrome
chrome_options = Options()
chrome_options.add_argument("--headless")  # Запуск в фоновом режиме
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")

# Путь к драйверу Chrome
chrome_driver_path = 'path/to/chromedriver'

# Создание папок для хранения изображений
os.makedirs('dataset/images_before', exist_ok=True)
os.makedirs('dataset/images_after', exist_ok=True)

def take_screenshot(driver, path):
    driver.save_screenshot(path)
    image = Image.open(path)
    image = image.crop((0, 0, 1920, 1080))  # Обрезка изображения до нужного размера
    image.save(path)

def main():
    driver = webdriver.Chrome(service=Service(chrome_driver_path), options=chrome_options)
    
    urls = [
        'https://example.com',  # Добавьте сюда URL-адреса сайтов
        # 'https://another-example.com',
    ]
    
    for i, url in enumerate(urls):
        driver.get(url)
        time.sleep(2)  # Ожидание загрузки страницы
        
        before_path = f'dataset/images_before/{i}.png'
        after_path = f'dataset/images_after/{i}.png'
        
        # Скриншот до нажатия кнопки
        take_screenshot(driver, before_path)
        
        # Нажатие на первую кнопку на странице
        try:
            button = driver.find_element(By.TAG_NAME, 'button')
            button.click()
            time.sleep(2)  # Ожидание изменений на странице
            
            # Скриншот после нажатия кнопки
            take_screenshot(driver, after_path)
        except Exception as e:
            print(f'Ошибка на {url}: {e}')
    
    driver.quit()

if __name__ == "__main__":
    main()

Шаг 4: Создание файла requirements.txt

Добавьте зависимости в файл requirements.txt:

selenium
pillow

Шаг 5: Создание файла README.md

Создайте файл README.md и добавьте инструкцию по запуску проекта:

# Web Scraper for Dataset Collection

Этот проект предназначен для автоматического сбора датасета изображений интерфейсов до и после нажатия кнопок на веб-страницах.

## Установка

1. Клонируйте репозиторий:

```bash
git clone https://github.com/yourusername/web_scraper.git
cd web_scraper
  1. Установите зависимости:
pip install -r requirements.txt
  1. Скачайте ChromeDriver и укажите путь к нему в main.py.

Использование

  1. Добавьте URL-адреса сайтов в список urls в main.py.
  2. Запустите скрипт:
python main.py

Структура проекта

web_scraper/
├── dataset/
│   ├── images_before/
│   └── images_after/
├── main.py
├── requirements.txt
└── README.md

Лицензия

Этот проект лицензирован под лицензией MIT.


### Шаг 6: Инициализация Git репозитория

Инициализируйте Git репозиторий и сделайте первый коммит:

```bash
cd web_scraper
git init
git add .
git commit -m "Initial commit"

Шаг 7: Публикация на GitHub

Создайте новый репозиторий на GitHub и следуйте инструкциям для добавления удаленного репозитория и пуша:

git remote add origin https://github.com/yourusername/web_scraper.git
git branch -M main
git push -u origin main

Теперь ваш проект готов и опубликован на GitHub. Вы можете делиться им с другими и продолжать его улучшать.