Веб-скрапинг с помощью Pydoll в 2025 году: Пошаговое руководство

Узнайте, как использовать Pydoll для соскабливания веб-сайтов, перегруженных JavaScript, обходить Cloudflare и масштабироваться с помощью вращающихся прокси-серверов, таких как Bright Data.
7 мин. чтения
Web Scraping With Pydoll blog image

В этом руководстве вы узнаете:

  • Что такое Pydoll и какие возможности он предоставляет
  • Как использовать его для поиска веб-сайтов с поддержкой JavaScript
  • Как обойти защиту Cloudflare
  • Его самые большие ограничения
  • Как преодолеть эти ограничения с помощью интеграции вращающегося прокси-сервера
  • Лучшие альтернативы Pydoll на основе Python

Давайте погрузимся!

Знакомство с Pydoll

Узнайте, что такое Pydoll, как он работает и что он предлагает в качестве библиотеки для веб-скрапинга на Python.

Что это такое

Pydoll – это библиотека автоматизации браузера на Python, созданная для веб-скреппинга, тестирования и автоматизации повторяющихся задач. Ее отличает то, что она устраняет необходимость в традиционных веб-драйверах. Она напрямую подключается к браузерам через протокол DevTools – никаких внешних зависимостей не требуется.

Первый стабильный релиз Pydoll, версия 1.0, вышел в феврале 2025 года. Это делает его относительно новым игроком в сфере веб-скреппинга. Несмотря на это, он уже успел завоевать большую популярность, получив более 3 000 звезд на GitHub:

История звезды pydoll на GitHub

Как вы уже поняли, библиотека набирает популярность в сообществе веб-скрапперов на Python.

Характеристики

Вот краткое описание основных функций, предлагаемых Pydoll:

  • Ноль веб-драйверов: Устраняет зависимость от драйверов браузеров, уменьшая проблемы несоответствия версий и упрощая настройку автоматизации на базе Chromium.
  • Асинхронная архитектура: Полностью построена на asyncio для обеспечения высокого параллелизма, эффективного использования памяти и современных паттернов разработки на Python.
  • Человекоподобное взаимодействие: Имитирует реалистичный ввод текста, движения мыши и нажатия, чтобы снизить вероятность обнаружения ботов при автоматизации.
  • Возможности управления событиями: Позволяет реагировать на события браузера, DOM, сети и жизненного цикла в режиме реального времени для автоматизации реагирования.
  • Поддержка нескольких браузеров: Совместимость с Chrome, Edge и другими браузерами Chromium, использующими один и тот же унифицированный интерфейс.
  • Снимки экрана и экспорт в PDF: Снимайте полные страницы, отдельные элементы или создавайте высококачественные PDF-файлы с любой загруженной веб-страницы.
  • Встроенный обход Cloudflare: Автоматически обходит антибот Cloudflare без сторонних сервисов, имитируя доверенные сессии браузера при высокой репутации IP-адреса.
  • Параллельное соскабливание: Параллельное соскабливание нескольких страниц или веб-сайтов, что значительно сокращает общее время выполнения.
  • Расширенное управление клавиатурой: Имитация реального ввода текста пользователем с точным контролем времени, модификаторов и специальных клавиш.
  • Мощная система событий: Обеспечивает мониторинг и обработку сетевых запросов, загрузки страниц и пользовательских событий браузера в режиме реального времени.
  • Поддержка загрузки файлов: Автоматизирует загрузку файлов, используя как прямой ввод, так и интерактивные диалоги выбора файлов.
  • Интеграция с прокси: Поддерживает использование прокси для ротации IP-адресов, геотаргетинга или обхода ограничений скорости при скраппинге.
  • Перехват запросов: Перехватывайте, изменяйте или блокируйте HTTP-запросы и ответы для расширенной автоматизации и управления скраппингом.

Узнайте больше в официальной документации.

Использование Pydoll для веб-скрапинга: Полное руководство

В этом учебном разделе вы узнаете, как использовать Pydoll для соскабливания данных из асинхронной версии “Quotes to Scrape“, работающей на JavaScript:

Целевой сайт загружает данные через 2 секунды

Эта страница динамически отображает элементы цитаты с помощью JavaScript после небольшой задержки. Таким образом, традиционные инструменты для скраппинга не будут работать из коробки. Чтобы извлечь содержимое этой страницы, вам понадобится инструмент автоматизации браузера, такой как Pydoll.

Выполните следующие шаги, чтобы создать веб-скрепер Pydoll, который динамически извлекает данные о цитатах из “Quotes to Scrape”.

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

Прежде чем приступить к работе, убедитесь, что на вашем компьютере установлен Python 3+. В противном случае загрузите его и следуйте инструкциям по установке.

Затем выполните следующую команду, чтобы создать папку для проекта скрапбукинга:

mkdir pydoll-scraper

В качестве папки проекта будет использоваться каталог pydoll-scraper.

Перейдите в папку в терминале и инициализируйте в ней виртуальную среду Python:

cd pydoll-scraper
python -m venv venv

Загрузите папку с проектом в вашу любимую Python IDE. Подойдет Visual Studio Code с расширением Python или PyCharm Community Edition.

Создайте файл scraper.py в папке проекта, который теперь должен содержать:

Структура файлов проекта для веб-скрапинга с помощью Pydoll

На данный момент scraper.py – это просто пустой Python-скрипт. Однако вскоре он будет содержать логику разбора данных.

Затем активируйте виртуальную среду в терминале вашей IDE. В Linux или macOS выполните команду:

source venv/bin/activate

Аналогично, в Windows запустите:

venv/Scripts/activate

Замечательно! Ваша среда Python теперь настроена для веб-скрапинга с помощью Pydoll.

Шаг #2: Настройка Pydoll

В активированной виртуальной среде установите Pydoll с помощью пакета pydoll-python:

pip install pydoll-python

Теперь добавьте приведенную ниже логику в файл scraper.py, чтобы начать работу с Pydoll:

import asyncio
from pydoll.browser.chrome import Chrome

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # scraping logic...

# Execute the async scraping function
asyncio.run(main())

Обратите внимание, что Pydoll предоставляет асинхронный API для веб-скрапинга и требует использования стандартной библиотеки Python asyncio.

Отлично! Теперь у вас есть базовый скрипт Pydoll.

Шаг № 3: Подключение к целевому сайту

Вызовите метод go_to(), предоставленный объектом страницы, для перехода на целевой сайт:

await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")

Параметр запроса ?delay=2000 указывает странице на динамическую загрузку нужных данных после 2-секундной задержки. Это особенность целевого сайта-песочницы, созданного для тестирования динамического поведения скраппера.

Теперь попробуйте запустить вышеуказанный скрипт. Если все работает правильно, Pydoll запустится:

  1. Запустите экземпляр Chrome
  2. Перейдите на целевой сайт
  3. Закройте окно браузера немедленно, поскольку в скрипте пока нет никакой дополнительной логики.

В частности, вот что вы должны увидеть до того, как он будет закрыт:

Целевая страница, загружаемая экземпляром Chrome, управляемым Pydoll

Отлично! Вы готовы добавить логику ожидания.

Шаг #4: Дождитесь появления HTML-элементов

Взгляните на последнее изображение из предыдущего шага. Оно представляет собой содержимое страницы, управляемой Pydoll в экземпляре Chrome. Вы заметите, что она полностью пуста – никакие данные не были загружены.

Причина в том, что целевой сайт динамически отображает данные с 2-секундной задержкой. Эта задержка характерна только для данного сайта. Тем не менее, необходимость ждать, пока страница отрендерится, является распространенным сценарием при скраппинге SPA (одностраничных приложений) и других динамических сайтов, которые полагаются на AJAX.

Узнайте больше в нашей статье о создании динамических веб-сайтов с помощью Python.

Чтобы справиться с этим распространенным сценарием, Pydoll предоставляет встроенные механизмы ожидания с помощью этого метода:

  • wait_element(): Ожидает появления одного элемента (с поддержкой таймаута)

Вышеописанный метод поддерживает CSS-селекторы, выражения XPath и многое другое – аналогично тому, как работает объект By в Selenium.

Настало время познакомиться с HTML целевой страницы. Итак, откройте ее в браузере, подождите, пока загрузятся кавычки, щелкните правой кнопкой мыши одну из кавычек и выберите опцию “Инспектировать”:

HTML элементов цитаты

На панели DevTools вы увидите, что каждая цитата обернута в

с классом quote. Это означает, что их можно выделить с помощью селектора CSS:

.quote

Теперь с помощью Pydoll дождитесь появления этих элементов, прежде чем продолжить:

await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)

Не забудьте импортировать By:

from pydoll.constants import By

Выполните скрипт еще раз, и на этот раз вы увидите, что Pydoll ждет, пока загрузятся элементы цитаты, прежде чем закрыть браузер. Отличная работа!

Шаг #5: Подготовка к веб-скрапингу

Помните, что целевая страница содержит не только одну цитату. Так как вы хотите соскрести их все, вам нужна структура данных для хранения этих данных. Простой массив отлично работает, так что инициализируйте его:

quotes = []

Чтобы найти элементы на странице, Pydoll предоставляет два удобных метода:

  • find_element(): Находит первый подходящий элемент
  • find_elements(): Находит все совпадающие элементы

Как и в случае с wait_element(), эти методы принимают селектор, используя объект By.

Итак, выделите все элементы цитаты на странице с помощью:

quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")

Далее пройдитесь по элементам и приготовьтесь применить логику скраппинга:

for quote_element in quote_elements:
  # Scraping logic...

Потрясающе! Пора приступить к логике извлечения данных.

Шаг #6: Реализация логики разбора данных

Начните с осмотра одного элемента цитаты:

HTML элемента цитаты

Как видно из приведенного выше HTML, один элемент цитаты содержит:

  • Текстовая цитата в узле .text
  • Автор в элементе .author
  • Список тегов в элементах .tag

Реализуйте логику скраппинга, чтобы выбрать эти элементы и извлечь из них интересующие вас данные:

# Extract the quote text (and remove curly quotes)
text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
text = (await text_element.get_element_text()).replace("“", "").replace("”", "")

# Extract the author name
author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
author = await author_element.get_element_text()

# Extract all associated tags
tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
tags = [await tag_element.get_element_text() for tag_element in tag_elements]

Примечание: Метод replace() удаляет ненужные фигурные двойные кавычки из извлеченного текста кавычек.

Теперь используйте полученные данные для создания нового объекта словаря и добавьте его в массив котировок:

# Populate a new quote with the scraped data
quote = {
    "text": text,
    "author": author,
    "tags": tags
}
# Append the extracted quote to the list
quotes.append(quote)

Отлично! Осталось только экспортировать собранные данные в CSV.

Шаг #7: Экспорт в CSV

В настоящее время отсканированные данные хранятся в списке Python. Экспортируйте их в человекочитаемый формат, например CSV, чтобы ими было удобнее делиться и изучать с другими.

С помощью Python создайте новый файл quotes.csv и заполните его полученными данными:

with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
            # Add the header
            fieldnames = ["text", "author", "tags"]
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

            # Populate the output file with the scraped data
            writer.writeheader()
            for quote in quotes:
                writer.writerow(quote)

Не забудьте импортировать csv из стандартной библиотеки Python:

import csv

Миссия выполнена! Ваш скребок Pydoll готов к выполнению.

Шаг № 8: Соберите все вместе

Теперь файл scraper.py должен содержать:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
import csv

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Navigate to the target page
        await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")

        # Wait up to 3 seconds for the quote elements to appear
        await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)

        # Where to store the scraped data
        quotes = []

        # Select all quote elements
        quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")

        # Iterate over them and scrape data from them
        for quote_element in quote_elements:
            # Extract the quote text (and remove curly quotes)
            text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
            text = (await text_element.get_element_text()).replace("“", "").replace("”", "")

            # Extract the author
            author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
            author = await author_element.get_element_text()

            # Extract all tags
            tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
            tags = [await tag_element.get_element_text() for tag_element in tag_elements]

            # Populate a new quote with the scraped data
            quote = {
                "text": text,
                "author": author,
                "tags": tags
            }
            # Append the extracted quote to the list
            quotes.append(quote)

    # Export the scraped data to CSV
    with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
                # Add the header
                fieldnames = ["text", "author", "tags"]
                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

                # Populate the output file with the scraped data
                writer.writeheader()
                for quote in quotes:
                    writer.writerow(quote)

# Execute the async scraping function
asyncio.run(main())

Вот это да! Менее чем за 60 строк кода вы можете создать бота для веб-скреппинга с помощью Pydoll.

Проверьте работу приведенного выше сценария, запустив его:

python scraper.py

По окончании выполнения в папке проекта появится файл quotes.csv. Откройте его, и вы увидите аккуратно упорядоченные данные:

Выходные данные в файле quotes.csv

И вуаля! Ваш скрипт веб-скрапинга Pydoll работает как надо.

Обход Cloudflare с помощью Pydoll

При взаимодействии с сайтом в инструменте автоматизации браузера одна из самых больших проблем, с которой вы столкнетесь, – это брандмауэры веб-приложений (WAF). Подумайте о таких решениях, как Cloudflare, которые обычно поставляются с расширенной защитой от ботов.

Если есть подозрение, что ваш запрос исходит от автоматического браузера, такие системы обычно показывают капчу. В некоторых случаях они показывают его всем пользователям при первом посещении сайта.

Обойти CAPTCHA в Python не так-то просто. Однако есть способы обмануть Cloudflare, заставив его думать, что вы реальный пользователь, чтобы он не показывал CAPTCHA в первую очередь. Здесь на помощь приходит Pydoll, предоставляющий специальный API для этой цели.

Чтобы продемонстрировать, как это работает, мы воспользуемся тестовой страницей “Antibot Challenge” с сайта ScrapingCourse:

Автоматическая проверка Cloudflare на целевой странице

Как видите, страница всегда выполняет Cloudflare JavaScript Challenge. После обхода она отображает образец содержимого, чтобы подтвердить, что защита от ботов была побеждена.

Pydoll предлагает два подхода к работе с Cloudflare:

  1. Подход контекстного менеджера: Обрабатывает вызов антибота синхронно, приостанавливая выполнение сценария до тех пор, пока вызов не будет решен.
  2. Подход к фоновой обработке: Работает с анти-ботом асинхронно в фоновом режиме.

Мы рассмотрим оба метода. Однако, как сказано в официальной документации, имейте в виду, что обход Cloudflare может сработать не всегда. Это связано с такими проблемами, как репутация IP-адреса или история навигации.

Чтобы узнать о более продвинутых методах, прочтите наше полное руководство по соскабливанию сайтов, защищенных Cloudflare.

Подход контекстного менеджера

Чтобы автоматически позволить Pydoll справиться с вызовом антибота Cloudflare, используйте метод expect_and_bypass_cloudflare_captcha() следующим образом:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Wait for the Cloudflare challenge to be executed
        async with page.expect_and_bypass_cloudflare_captcha():
            # Connect to the Cloudflare-protected page:
            await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
            print("Waiting for Cloudflare anti-bot to be handled...")

        # This code runs only after the anti-bot is successfully bypassed
        print("Cloudflare anti-bot bypassed! Continuing with automation...")

        # Print the text message on the success page
        await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
        success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
        success_text = await success_element.get_element_text()
        print(success_text)

asyncio.run(main())

Когда вы запустите этот скрипт, окно Chrome автоматически обойдет вызов и загрузит целевую страницу.

Выходные данные будут такими:

Waiting for Cloudflare anti-bot to be handled...
Cloudflare anti-bot bypassed! Continuing with automation...
You bypassed the Antibot challenge! :D

Подход к обработке фона

Если вы предпочитаете не блокировать выполнение скрипта, пока Pydoll обрабатывает вызов Cloudflare, вы можете использовать методы enable_auto_solve_cloudflare_captcha() и disable_auto_solve_cloudflare_captcha() следующим образом:

import asyncio
from pydoll.browser import Chrome
from pydoll.constants import By

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Enable automatic captcha solving before navigating
        await page.enable_auto_solve_cloudflare_captcha()

        # Connect to the Cloudflare-protected page:
        await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
        print("Page loaded, Cloudflare anti-bot will be handled in the background...")

        # Disable anti-bot auto-solving when no longer needed
        await page.disable_auto_solve_cloudflare_captcha()

        # Print the text message on the success page
        await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
        success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
        success_text = await success_element.get_element_text()
        print(success_text)

asyncio.run(main())

Такой подход позволяет вашему скреперу выполнять другие операции, в то время как Pydoll решает проблему антибота Cloudflare в фоновом режиме.

На этот раз вывод будет таким:

Page loaded, Cloudflare anti-bot will be handled in the background...
You bypassed the Antibot challenge! :D

Ограничения данного подхода к веб-скрапингу

Если вы отправляете слишком много запросов, то есть вероятность, что вы будете заблокированы сервером Pydoll или любым другим инструментом для скраппинга. Это происходит потому, что большинство сайтов ограничивают скорость передачи данных, чтобы боты (например, ваш скрипт) не перегружали их серверы запросами.

Это распространенная техника защиты от скаппинга и DDoS. В конце концов, никто не хочет, чтобы его сайт был наводнен автоматическим трафиком.

Даже если вы придерживаетесь лучших практик, таких как соблюдение robots.txt, выполнение множества запросов с одного IP-адреса все равно может вызвать подозрения. В результате вы можете столкнуться с ошибками 403 Forbidden или 429 Too Many Requests.

Лучший способ избежать этого – изменить свой IP-адрес с помощью веб-прокси.

Если вы не знакомы с этим понятием, веб-прокси выступает в роли посредника между вашим скрепером и целевым сайтом. Он пересылает ваши запросы и возвращает ответы, создавая у целевого сайта впечатление, что трафик идет с прокси, а не с вашего компьютера.

Эта техника не только помогает скрыть ваш реальный IP, но и полезна для обхода гео-ограничений и многих других случаев использования.

Сейчас существует несколько типов прокси. Чтобы избежать блокировки, вам нужен качественный провайдер, предлагающий настоящие вращающиеся прокси, например Bright Data.

В следующем разделе вы увидите, как интегрировать вращающиеся прокси Bright Data с Pydoll для более эффективного соскабливания веб-страниц, особенно в масштабе.

Интеграция Pydoll с вращающимися прокси Bright Data

Bright Data контролирует одну из крупнейших прокси-сетей в мире, которой доверяют компании из списка Fortune 500 и более 20 000 клиентов. Ее прокси-сеть включает в себя:

Следуйте приведенным ниже инструкциям и узнайте, как использовать прокси-серверы Bright Data для жилых помещений с Pydoll.

Если у вас еще нет учетной записи, зарегистрируйтесь в Bright Data. В противном случае войдите в систему, чтобы получить доступ к панели управления:

Приборная панель Bright Data

На приборной панели нажмите кнопку “Получить прокси-продукты”:

Вы будете перенаправлены на страницу “Прокси и инфраструктура скрапинга”:

Страница "Прокси-серверы и инфраструктура скрапинга".

В таблице найдите строку “Residential” и щелкните по ней:

Щелкните по строке "Жилые помещения".

Вы попадете на страницу настройки жилого прокси:

Страница "Жилье"

Если это ваш первый раз, следуйте указаниям мастера настройки, чтобы сконфигурировать прокси в соответствии с вашими потребностями. За помощью обращайтесь в круглосуточную службу поддержки.

Перейдите на вкладку “Обзор” и найдите хост, порт, имя пользователя и пароль вашего прокси-сервера:

Учетные данные прокси-сервера

Используйте эти данные для создания URL-адреса прокси-сервера:

proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>";

Замените местами (, , , ) на ваши фактические учетные данные прокси.

Убедитесь, что прокси-продукт активирован, переключив переключатель с “Off” на “On”:

Нажатие на переключатель активации

Теперь, когда вы подготовили свой прокси, вот как интегрировать его в Pydoll, используя встроенные возможности настройки прокси:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.browser.options import Options
from pydoll.constants import By
import traceback

async def main():
    # Create browser options
    options = Options()

    # The URL of your Bright Data proxy
    proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>" # Replace it with your proxy URL

    # Configure the proxy integration option
    options.add_argument(f"--proxy-server={proxy_url}")

    # To avoid potential SSL errors
    options.add_argument("--ignore-certificate-errors")

    # Start browser with proxy configuration
    async with Chrome(options=options) as browser:
        await browser.start()
        page = await browser.get_page()

        # Visit a special page that returns the IP of the caller
        await page.go_to("https://httpbin.io/ip")

        # Extract the page content containing only the IP of the incoming
        # request and print it
        body_element = await page.find_element(By.CSS_SELECTOR, "body")
        body_text = await body_element.get_element_text()
        print(f"Current IP address: {body_text}")

# Execute the async scraping function
asyncio.run(main())

Каждый раз, когда вы запускаете этот скрипт, вы будете видеть другой IP-адрес выхода, благодаря ротации прокси Bright Data.

Примечание: Обычно флаг Chrome --proxy-server не поддерживает аутентифицированные прокси-серверы из коробки. Однако продвинутый прокси-менеджер Pydoll отменяет это ограничение, позволяя использовать прокси-серверы, защищенные паролем.

С вращающимися прокси Bright Data ротация прокси Pydoll становится простой, надежной и масштабируемой!

Альтернативы Pydoll для веб-скрапинга

Pydoll – это, несомненно, мощная библиотека для веб-скрапинга, особенно для автоматизации браузеров со встроенными функциями обхода ботов. Тем не менее, это не единственный инструмент в игре.

Ниже представлены несколько надежных альтернатив Pydoll, которые стоит рассмотреть:

  • SeleniumBase: Python-фреймворк, построенный на основе API Selenium/WebDriver и предлагающий набор инструментов профессионального уровня для автоматизации веб-процессов. Он поддерживает все: от сквозного тестирования до продвинутых рабочих процессов скрапинга.
  • Необнаруженный ChromeDriver: Исправленная версия ChromeDriver, предназначенная для обхода обнаружения популярными антибот-сервисами, такими как Imperva, DataDome и Distil Networks. Идеально подходит для скрытого скраппинга при использовании Selenium.

Если вы ищете более универсальное решение для веб-скреппинга, которое работает на любом сайте и поддерживает несколько языков программирования, обратите внимание на наши услуги по скреппингу:

  • Браузер для скрапинга: Браузер, совместимый с Selenium-, Playwright-, Puppeteer, со встроенными возможностями разблокировки.
  • API для веб-скреперов: Предварительно настроенные API для извлечения структурированных данных из 100+ основных доменов.
  • Web Unlocker: Универсальный API, позволяющий разблокировать сайты с защитой от ботов.
  • SERP API: Специализированный API, который открывает результаты поисковых систем и извлекает полные данные SERP.

Заключение

В этом уроке по интеграции прокси вы узнали, что такое Pydoll и как он работает. Мы рассмотрели, как использовать его для веб-скрапинга на сайте с JavaScript, и увидели, как устранить его основное
ограничение с помощью интеграции прокси.

Вы также поняли, почему использование Pydoll без механизма ротации IP-адресов может привести к ненадежным результатам. Для стабильной работы, повышенной безопасности и масштабируемости необходимо выбрать надежного прокси-провайдера. Сэкономьте время и силы, обратившись к лучшему прокси-провайдеру на рынке– Bright Data.

Создайте аккаунт и начните тестировать наши прокси бесплатно уже сегодня!

Кредитная карта не требуется

Вас также может заинтересовать

best frameworks for ai agents
AI

12 лучших фреймворков для создания агентов искусственного интеллекта в 2025 году

Создавайте продвинутые агенты искусственного интеллекта с помощью этих фреймворков. Сравните возможности, интеграции и выберите идеальное решение для ваших автономных целей.
4 мин. чтения
Understanding Vector Databases blog image
AI

Понимание векторных баз данных: Двигатель, стоящий за современным искусственным интеллектом

Узнайте, как работают векторные базы данных, какова их роль в искусственном интеллекте и как использовать их с реальными данными для семантического поиска и интеллектуальных приложений.
8 мин. чтения
How to Train an AI Model blog image
Веб-данные

Как обучить модель искусственного интеллекта: Пошаговое руководство

Узнайте, как точно настроить модели ИИ с помощью инструментов OpenAI для повышения производительности и эффективности.
4 мин. чтения