Вебскрапінг з Pydoll

Вебскрапінг із Pydoll у 2026

У цій статті я покажу, як почати працювати з Pydoll, впоратися з вебсайтами на основі JavaScript і масштабувати свій вебскрапінг за допомогою ротаційних проксі. Розгляньмо це детальніше!

Що таке Pydoll?

Pydoll — це бібліотека для автоматизації браузера на Python, яка спрощує вебскрапінг і вебавтоматизацію. На відміну від традиційних інструментів для вебскрапінгу, які покладаються на драйвери браузера (наприклад, Selenium WebDriver), Pydoll напряму підключається до браузерів на базі Chromium через DevTools Protocol. Це усуває потребу в зовнішніх залежностях, зменшуючи складність налаштування та запобігаючи проблемам, пов’язаним із невідповідністю драйверів.

Вперше випущений на початку 2025 року, Pydoll швидко здобув популярність завдяки своїм унікальним можливостям і функціям, що робить його надійним вибором для розробників, які розв’язують сучасні завдання вебскрапінгу.

Ключові можливості Pydoll:

  • Zero Web Drivers: Усуває потребу в драйверах браузера, уникаючи проблем сумісності версій.
  • Async-First Architecture: Побудовано на asyncio для високої паралельності та низького споживання пам’яті.
  • Human-Like Interactions: Імітує реалістичні рухи миші, введення тексту та кліки, щоб уникнути виявлення.
  • Multi-Browser Support: Працює з Chrome, Edge та іншими браузерами Chromium.
  • Native Cloudflare Bypass: Може обходити антибот-захист Cloudflare automatically.
  • Proxy Support: Підтримує ротацію IP та геотаргетинг із використанням проксі.

Встановлення та налаштування Pydoll

Крок 1: Встановіть Python

Перед тим як почати, переконайтеся, що на вашому комп’ютері встановлено Python 3. Якщо ні, завантажте його з python.org і дотримайтеся інструкцій зі встановлення.

Крок 2: Створіть каталог проєкту

Почніть зі створення нового каталогу для свого проєкту. Відкрийте термінал або командний рядок і виконайте таку команду:

mkdir pydoll-scraper
cd pydoll-scraper

Крок 3: Налаштуйте віртуальне середовище

Добра практика — використовувати віртуальне середовище для ваших Python-проєктів, щоб уникнути конфліктів з іншими бібліотеками Python. Щоб налаштувати віртуальне середовище, виконайте таку команду:

python -m venv venv

Активуйте віртуальне середовище:

У macOS/Linux:

source venv/bin/activate

On Windows:

venv/Scripts/activate

Крок 4: Встановіть Pydoll

Тепер, коли ваше середовище налаштовано, установіть Pydoll, виконавши:

pip install pydoll-python

Вебскрапінг даних із динамічного вебсайту

Тепер скористаймося Pydoll для вебскрапінгу даних із динамічного вебсайту, який завантажує вміст за допомогою JavaScript.

Крок 1: Імпортуйте Pydoll і налаштуйте браузер

In your scraper.py file, start by importing the necessary libraries and initializing Pydoll:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
import csv
async def main():
async with Chrome() as browser:
await browser.start()
page = await browser.get_page()
# Navigation and scraping logic goes here

Крок 2: Перейдіть на вебсайт

Let’s scrape data from a website called “Quotes to Scrape.” This site loads quotes dynamically using JavaScript, which traditional scraping tools can’t handle. You can visit the site with the following code:

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

Крок 3: Дочекайтеся завантаження елементів

Since the content on this page is rendered with a delay, you need to wait for the elements to appear. Pydoll has a method called wait_element to handle this:

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

Це гарантує, що цитати буде завантажено перед їхнім вебскрапінгом.

Крок 4: Витягніть дані

Тепер, коли елементи завантажено, можемо витягнути дані. Ми можемо пройтися по всіх елементах цитат і витягнути текст, автора та теги:

quotes = []
quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")
for quote_element in quote_elements:
text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
text = (await text_element.get_element_text()).replace(""", "").replace(""", "")
author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
author = await author_element.get_element_text()
tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
tags = [await tag_element.get_element_text() for tag_element in tag_elements]
quote = {
"text": text,
"author": author,
"tags": tags
}
quotes.append(quote)

Крок 5: Збережіть дані у CSV

Нарешті, експортуйте зібрані дані у файл CSV:

with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
fieldnames = ["text", "author", "tags"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for quote in quotes:
writer.writerow(quote)

Обхід Cloudflare за допомогою Pydoll

Cloudflare — популярний WAF, який багато сайтів використовують для захисту від ботів. Якщо ви виконуєте вебскрапінг сайту, захищеного Cloudflare, ви, ймовірно, зіткнетеся з CAPTCHA або іншими перевірками.

Pydoll надає простий спосіб обійти антибот-захист Cloudflare:

Context Manager Approach

The easiest way to bypass Cloudflare using Pydoll is with the context manager expect_and_bypass_cloudflare_captcha():

async with page.expect_and_bypass_cloudflare_captcha():
await page.go_to("https://www.scrapingcourse.com/antibot-challenge")

Це автоматично обробляє CAPTCHA і дає скраперу змогу продовжити роботу.

Background Processing Approach

Якщо ви не хочете, щоб ваш скрипт було заблоковано під час розв’язання CAPTCHA, використайте підхід із фоновою обробкою:

await page.enable_auto_solve_cloudflare_captcha()
# Scrape the page while the CAPTCHA is being solved in the background
await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
# Disable CAPTCHA solving when done
await page.disable_auto_solve_cloudflare_captcha()

Інтеграція ротаційних проксі з Bright Data

Щоб уникнути блокування з боку сервера сайту, ви можете використовуйте ротаційні проксі. Bright Data (раніше Luminati) пропонує одну з найбільших і найнадійніших мереж проксі.

Як використовувати проксі Bright Data

Створіть обліковий запис Bright Data, увійдіть до панелі керування та отримайте свої облікові дані для проксі. Після цього ви можете налаштувати Pydoll на використання цих проксі:

await page.set_proxy({
"host": "brd.superproxy.io",
"port": 33335,
"username": "your_username",
"password": "your_password"
})

Використання ротаційних проксі гарантує, що кожен запит надсилається з іншої IP-адреси, запобігаючи блокуванню вашого вебскрапера.

Обмеження Pydoll

Хоча Pydoll є потужним інструментом, важливо розуміти його обмеження:

  • Rate Limiting: Навіть із проксі ви все ще можете потрапити під обмеження частоти запитів, якщо надсилатимете забагато запитів надто швидко. Важливо впроваджувати такі стратегії, як випадкове варіювання затримок між запитами.
  • CAPTCHA: Хоча Pydoll може обходити Cloudflare, він не завжди спрацьовує для кожного типу CAPTCHA. Тому я раджу вам ознайомитися з моїм списком найкращі розв’язувачі CAPTCHA (усі протестовані!).
  • Compatibility: Pydoll створено для браузерів на базі Chromium, тож він може не працювати з усіма вебсторінками, особливо з тими, що потребують браузерів, не заснованих на Chromium.

Альтернативи Pydoll

Якщо Pydoll не підходить вашим потребам, ви можете розглянути кілька альтернатив:

  • Selenium: Найпопулярніший інструмент для вебскрапінгу, що забезпечує повну автоматизацію браузера. Він підтримує всі браузери, але потребує браузерних драйверів.
  • Playwright: Сучасна альтернатива Selenium, створена для швидкості та надійності з підтримкою Chromium, Firefox і WebKit.
  • Scrapy: Потужний Python-фреймворк для масштабного вебскрапінгу, але він не працює із сайтами, насиченими JavaScript, «з коробки».

Conclusion

Pydoll — потужний інструмент, який спрощує вебскрапінг у 2025 році. Його асинхронна архітектура, здатність працювати з сайтами з інтенсивним використанням JavaScript і вбудований обхід Cloudflare роблять його чудовим вибором для сучасних завдань зі скрапінгу. Дотримуючись цього покрокового посібника, ви зможете легко налаштувати та розгорнути вебскрапер для збирання даних із динамічних сайтів і подолання поширених проблем, як-от блокування IP та CAPTCHA.

Пам’ятайте, що завжди потрібно дотримуватися юридичних та етичних аспектів вебскрапінгу, а також використовувати ротаційні проксі та затримки, щоб не перевантажувати цільові сервери. Успішного вебскрапінгу!

Схожі записи