Если вы хотите парсить динамические сайты, использующие JavaScript, рекомендуется использовать инструмент автоматизации браузера. Он позволяет управлять браузером с помощью кода и собирать информацию, которая в нем отображается.
Существует множество инструментов автоматизации браузера, таких как Puppeteer, Selenium и Playwright. В этой статье мы уделим внимание Playwright и Selenium, рассмотрим их на основе предлагаемых функций, гибкости и производительности, поддержки сообщества / браузера, настройки и простоты использования.
Установка и простота использования
Playwright и Selenium поддерживают несколько языков программирования, включая Java, Python и JavaScript, посредством привязок к конкретному языку, которые используют один и тот же API. Чтобы начать работу Playwright или Selenium, вам необходимо загрузить привязку для вашего языка.
Например, если вы используете Python, вам необходимо загрузить и установить библиотеку pytest-playwright
, а при использовании Selenium
— библиотеку selenium.
Однако при установке Selenium есть один дополнительный шаг: вам нужно загрузить WebDriver для используемого браузера. Например, если вы хотите парсить с помощью Chrome, скачайте ChromeDriver.
Playwright же имеет один драйвер и загружает необходимые двоичные файлы для всех поддерживаемых браузеров, запуская команду playwright install.
После выполнения нужных настроек обе библиотеки ведут себя похоже. Вам будет легко в них ориентироваться, если вы уже имеете опыт с веб-скрапингом. Однако если вы новичок, Playwright предлагает более лаконичный API и мощные возможности отладки, которые помогут без проблем создать пару первых скриптов. Кроме того, документация Playwright более современная и лучше подходит для начинающих.
В целом, и с Selenium, и с Playwright легко начать работу. Однако опыт использования Playwright более плавный и менее подвержен ненужной путанице.
Предлагаемые функции
Playwright и Selenium предлагают все базовые функции определения расположений элементов. Вы можете найти их с помощью селекторов CSS или XPath:
# Playwright
heading = page.locator('h1')
accept_button = page.locator('//button[text()="Accept"]')
# Selenium
heading = driver.find_element(By.CSS_SELECTOR, 'h1')
accept_button = driver.find_element(By.XPATH, '//button[text()="Accept"]')
Playwright предлагает дополнительные локаторы, которые позволяют запрашивать такие свойства, как text, placeholder, title, и role. Так разработчики могут писать более понятные функции локаторов. А также они полезны для новичков, которые еще не знают, как получить их с помощью селекторов:
accept_button = page.get_by_text("Accept")
При парсинге веб-приложений важно правильно рассчитать время действий. Вам нужно убедиться, что вы не выполняете действия над элементами, которые еще не появились, а также что вы не ожидаете долгое время, пока элементы загрузятся.
Для этого Selenium использует явные операторы ожидания. Например, они могут указать скрипту ждать загрузку элемента на страницу:
el = WebDriverWait(driver, timeout=3).until(lambda x: x.find_element(By.TAG_NAME,"button"))
el.click()
Ожидание в Playwright немного проще. Перед выполнением действий над элементами Playwright автоматически выполняет ряд проверок на возможность выполнения действий. Это означает, что не получится нажать на элемент, который еще не виден:
page.get_by_role("button").click()
Оба инструмента также имеют несколько примечательных функций для отладки и генерации кода. Например, Playwright Inspector позволяет просматривать скрипты и видеть, где они идут не так. Поэтому не нужно повторно запускать один и тот же скрипт миллион раз подряд!
А если вы хотите создавать свои скрипты без поиска селекторов в HTML, у Playwright есть возможность записать их с помощью генератора кода. Он записывает действия, которые вы совершаете, и предоставляет код для их выполнения. Это делает его одним из лучших для ознакомления с библиотекой для тех, кто только начинает.
Несмотря на то, что код, созданный генератором, бесполезен для извлечения информации из-за специфики селекторов, эксперты считают его полезным для создания установочных действий, которые выполняют перед парсингом. Например, вход в учетную запись или переход на нужную страницу.
Selenium также имеет инструмент для воспроизведения и записи Selenium IDE, доступный в качестве расширения для Chrome и Firefox. Selenium IDE является инструментом воспроизведения и записи, позволяет записывать скрипты Selenium непосредственно в среде браузера. Этот инструмент объединяет возможности Playwright Inspector и генератора кода в простой и удобный пакет.
Гибкость и производительность
Как мы писали ранее, Playwright и Selenium поддерживают большинство языков. Playwright официально поддерживает JavaScript/TypeScript, Java, Python и C#. И Selenium – Java, C#, Python, JavaScript, Ruby и Kotlin.
В дополнение к официально поддерживаемым языкам, языки могут иметь неофициальные библиотеки привязки, которые можно использовать для того же эффекта. Среди них Selenium является более популярным выбором, поскольку большинство языков программирования имеют по крайней мере одну библиотеку привязки для него. То есть если вы решите работать с Selenium, то вы сможете использовать его для парсинга практически на любом языке программирования, с которым столкнетесь.
Согласно большинству тестов, Playwright заметно быстрее, чем Selenium. Поскольку они оба работают с настоящим браузером (хотя обычно без GUI для экономии ресурсов), существует предел эффективности этих инструментов. Однако разработчики Playwright реализовали множество оптимизаций, которые ускоряют выполнение скриптов и упрощают их распараллеливание.
В настоящее время оба инструмента поддерживают контексты, аналогичные режиму инкогнито в браузере, который позволяет запускать несколько независимых сеансов в одном браузере, что экономит затраты на его запуск при изолированном выполнении скриптов. Однако реализация контекстов в Playwright дает больше преимуществ в производительности, чем в Selenium, потому что вы можете запускать несколько контекстов параллельно, что еще больше ускоряет процесс парсинга.
Поддержка сообщества
Selenium и Playwright имеют отличную поддержку сообщества. Их используют многие эксперты по веб-скрапингу, что позволяет легко найти руководство по нужной теме.
Поскольку Selenium старше Playwright, у него было больше времени для накопления документации и руководств, охватывающих широкий спектр его функций. Независимо от того, какую функцию вы хотите использовать, она, скорее всего, подробно задокументирована командой разработчиков и сообществом. Более того, если вам когда-нибудь понадобится помощь в использовании Selenium, есть много мест, где вы можете получить ответы на свои вопросы.
У Playwright было меньше времени на создание коллекции материалов, но это компенсируется тем, что в Playwright работают специальные разработчики из Microsoft, представляющие и объясняющие новые функции, которые разрабатывает и предлагает команда. Его документация, вероятно, чище и современнее, что облегчает использование новичками.
Советы и руководства по использованию Playwright можно найти в официальном блоге и на канале YouTube. А если вы хотите присоединиться к сообществу Playwright, у команды есть канал сообщества в Discord.
Подведем итоги
Если сравнить Playwright и Selenium, то Playwright, безусловно, является более выгодным инструментом с множеством интересных новых функций, в то время как Selenium — это стабильный инструмент, который хорошо работает и подходит для экспертов. Если вы только начинаете парсить веб-страницы, выбирайте Playwright. Он предлагает лучшую поддержку новичкам.
Независимо от того, выбираете вы Playwright или Selenium, прокси Bright Data можно легко интегрировать с любым из этих инструментов автоматизации браузера. Следуйте нашему пошаговому руководству по интеграции прокси Playwright и Selenium. Присоединяйтесь к крупнейшей сети прокси и запустите бесплатную пробную версию.