# ScreenShooter **Repository Path**: tim55667757/ScreenShooter ## Basic Information - **Project Name**: ScreenShooter - **Description**: Screen shooter - программа для автоматизации снятия скриншотов сайта. - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-14 - **Last Updated**: 2024-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Screen shooter - программа для автоматизации снятия скриншотов сайта. Перед использованием программы необходимо установить и настроить Selenium WebDriver для Python 3.2.: http://forworktests.blogspot.com/p/selenium-web-driver.html Программа ищет все ссылки на стартовой страничке, задаваемой ключом -u, перемещается по ним и делает скриншоты. Глубина прохождения ссылок ограничивается ключом -d и берется из промежутка [0, +oo), по умолчанию 1 (снимать скриншоты со стартовой странички и всех страничках по найденным на ней ссылкам). В программе реализован древовидный поиск ссылок. При этом стартовая страничка имеет наивысший уровень глубины, является верхним узлом дерева ссылок, а найденные на ней ссылки на другие странички, являются узлами-потомками с уровнем глубины на единицу меньше. Таким образом, отсчет уровней идет сверху вниз до нуля. Используя ключ -m можно указать 2 метода поиска ссылок на страничках: CSS (по умолчанию) - более медленный (использует библиотеку lxml), xPath - более быстрый (использует библиотеку WebDriver). Ключом -b можно указать открываемые браузеры (*firefox, *chrome, *ie), *firefox по умолчанию. Использование приложенных к программе драйверов для Chrome и IE возможно только в Windows. Скриншоты кладутся в каталог <корень_проекта>/screens/<дата_время>/ в виде файлов depth_<глубина>_index_<номер>.png. Программа хорошо применима для сайтов с простой древовидной структурой страничек, желательно с абсолютными путями и со ссылками без зацикливания. Программа не может определять тип авторизации, поэтому в случае запроса на авторизацию, она остановится, ожидая действия пользователя. Параметры для консольного запуска программы представлены ключами: Ключ Слово Описание -h --help Показать подсказку по опциям. -u --URL Стартовый URL для скрин-шутера. -d --depth Глубина спуска по ссылкам [0..+оо). Стартовый URL имеет наивысший индекс, спуск идет до нуля. -m --method 'CSS' для использования lxml CSS finder (медленнее), 'xPath' для использования WebDriver XPath finder (быстрее). -b --browser Строка браузера (*firefox, *chrome, *ie), показывающая, какой браузер запустить. Находясь в корне проекта для запуска программы можно использовать команду: python screen_shooter.py [options] Примеры: python screen_shooter.py --URL=http://forworktests.blogspot.com/ # Запуск скрин-шутера на указанный URL. Последний слеш обязателен. Браузер Mozilla по умолчанию. python screen_shooter.py -u http://forworktests.blogspot.com/ -d 0 # Сделать скриншот только целевого узла. По умолчанию depth = 1 - делаются скриншоты всех страничек по ссылкам. python screen_shooter.py -u http://forworktests.blogspot.com/ -m xPath -b *ie # Использовать поиск ссылок по xPath (по умолчанию CSS), запустить браузер IE. python screen_shooter.py -u http://forworktests.blogspot.com/ --method=xPath --browser=*chrome # Использовать поиск ссылок по xPath, запустить браузер Chrome. Структура проекта ScreenShooter - корень проекта. /browser_drivers - каталог с Windows-драйверы для chrome и ie. /ff_profile - каталог для профиля мозиллы (пустой по умолчанию). screen_shooter.py - реализация программы. readme.txt - актуальная информация по проекту. Содержимое модуля screen_shooter.py Глобальные переменные: startURL = 'http://forworktests.blogspot.com/' # Стартовый URL. depth = 1 # Глубина прохождения по ссылкам. method = 'CSS' # Метод поиска ссылок, ('CSS' или 'xPath'). linksTree = {} # Словарь для дерева ссылок. workDir = os.path.abspath(os.curdir) # Рабочая директория проекта, относительно которой строятся другие пути. resultPath = workDir + '/screens' # Путь к каталогу со скриншотами, относительно рабочей директории. browser = None # Переменная для браузера открываемого Selenium WebDriver. browserString = '*firefox' # Строка для запуска браузера ('*firefox', '*ie', '*chrome'). '*firefox' по умолчанию. Функции: ParseArgs() # Парсер аргументов командной строки. LinksCrawlerByXPath(startURL, depth, tree) # Поиск ссылок по xPath. LinksCrawlerByCSS(startURL, depth, tree) # Поиск ссылок в CSS. GetScreen(nameOfScreen) # Снятие скриншота и сохранение в указанный файл. MakeAllScreens(screenDir, depth, tree) # Функция для прохождения по всему дереву ссылок и снятие скриншота страничек. OpenBrowser(opTimeout, browserString, ffProfile) # Открытие браузера с указанным таймаутом для операций. CloseBrowser() # Закрытие браузера. Main() # Открытие браузера, переход на стартовый URL, поиск ссылок, хождение по ссылкам и снятие скриншотов.