Як використовувати AdsPower з Beautiful Soup для парсингу

By Anonymous☉ 4654 Views

Take a Quick Look

Дізнайтеся, як поєднати антидетект-браузер AdsPower з Beautiful Soup для надійного парсингу без блокувань. Покрокове налаштування, приклади коду та сценарії використання.

🔥 Limited-Time Offer! Save extra 10% off on your first monthly plan with code: Anitdetect10

Як використовувати AdsPower з Beautiful Soup для парсингу

Веб-скрапінг за допомогою звичайних Python-запитів часто наштовхується на стіну: сучасні сайти виявляють автоматизований трафік за допомогою відбитків браузера, відсутності виконання JavaScript та репутації IP-адреси. AdsPower і Beautiful Soup вирішують протилежні половини цієї проблеми. AdsPower надає вам реальне ізольоване середовище браузера з унікальним відбитком пальця та необов'язковим проксі; Beautiful Soup забезпечує швидкий і читабельний розбір HTML після завантаження сторінки. Разом вони створюють стек скрапінгу, який виглядає як людський для цільового сайту та залишається зручним для підтримки у вашій кодовій базі.

Цей посібник пояснює, чому така комбінація працює, як підключити AdsPower до вашого Python-скрипта та як передати відрендерений HTML у Beautiful Soup для вилучення даних. Ви також знайдете практичні приклади для електронної комерції, соціальних мереж та багатоакаунтних робочих процесів.

Чому варто поєднувати AdsPower і Beautiful Soup?

Beautiful Soup product interface

Beautiful Soup product interface.

AdsPower — це антидетект-браузер, який створює ізольовані профілі браузера, кожен зі своїм цифровим відбитком пальця, що охоплює Canvas, WebGL, user agent, шрифти та інші параметри. Він також підтримує проксі, тому кожен профіль може виглядати так, ніби він походить з різної IP-адреси. Це значно ускладнює таким платформам, як Amazon, Facebook або TikTok, пов'язувати вашу скрапінгову активність з однією особою та блокувати її.

Beautiful Soup — це бібліотека Python для розбору HTML та XML документів. Вона не виконує JavaScript і не керує сеансами браузера. Вона чудово вміє навігувати по дереву розбору, шукати елементи та витягувати чистий текст або атрибути з мінімальним кодом.

Прогалину між ними заповнює драйвер автоматизації браузера. AdsPower надає Local API, який дозволяє запускати профіль і підключатися до нього через Selenium або Puppeteer. Selenium керує реальним браузером Chromium у профілі AdsPower, чекає завершення виконання JavaScript і повертає повністю відрендерений вихідний код сторінки. Потім Beautiful Soup аналізує цей код.

Цей конвеєр дає вам три переваги:

  • Ізоляція відбитків пальців: Кожен профіль AdsPower виглядає як інший пристрій, що зменшує ймовірність того, що сайти співставлять ваші запити.
  • Підтримка JavaScript: Selenium виконує скрипти на сторінці, тому ви можете збирати контент, який з'являється лише після рендерингу.
  • Чистий розбір: Beautiful Soup робить логіку вилучення простою та читабельною, без крихких регулярних виразів або ланцюжків XPath.

Які проблеми вирішує ця комбінація?

Beautiful Soup product interface

Beautiful Soup product interface.

Скрапінг за допомогою requests і Beautiful Soup окремо часто не працює на захищених сайтах. Сервер бачить Python user agent, відсутні заголовки браузера та IP дата-центру. Він відповідає CAPTCHA, кодом 403 або фейковою сторінкою. AdsPower вирішує сигнали на стороні браузера; резидентний проксі або проксі провайдера, налаштований у профілі, вирішує сигнали на стороні мережі.

Beautiful Soup окремо також не може взаємодіяти зі сторінкою. Якщо сайт завантажує ціни на товари через XHR-запит після початкового HTML, статичний парсер нічого не бачить. Selenium у профілі AdsPower чекає завершення цих запитів. Ви навіть можете прокручувати сторінку або клікати, щоб запустити ліниве завантаження перед вилученням HTML.

Для команд, які керують кількома акаунтами, система пакетних профілів AdsPower означає, що кожне завдання скрапінгу може виконуватися в окремому ізольованому середовищі. Один профіль може збирати каталог конкурента, поки інший моніторить ваші власні списки товарів, без спільних файлів cookie або сховища між ними.

Передумови

Перш ніж писати код, переконайтеся, що у вас є:

  • AdsPower, встановлений на Windows, Mac або Linux. Безкоштовної пробної версії достатньо для тестування робочого процесу.
  • Python 3.8 або новіша версія на вашому комп'ютері.
  • Увімкнено AdsPower Local API. У настільному застосунку AdsPower перейдіть до Налаштування > Налаштування API та зверніть увагу на порт API (зазвичай 50325).
  • Створений профіль браузера в AdsPower. Запишіть його ID профілю, який можна знайти в списку профілів або, натиснувши на профіль, перевіривши URL.
  • Встановлені пакети Python:
pip install requests selenium beautifulsoup4 lxml

Парсер lxml необов'язковий, але рекомендований для швидкості та стійкості до неякісного HTML.

Крок 1: Підключення до профілю AdsPower через Local API

Local API AdsPower працює на вашому комп'ютері та приймає HTTP-запити. Дві кінцеві точки, які вам потрібні:

  • GET /api/v1/user/list — повертає всі профілі з їхніми ID.
  • GET /api/v1/browser/start?user_id=... — запускає профіль і повертає деталі підключення Selenium WebDriver.

Ось мінімальна функція, яка запускає профіль і повертає драйвер Selenium:

import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

ADSPOWER_API = "http://127.0.0.1:50325"

def start_adspower_profile(profile_id):
    # Попросіть AdsPower відкрити профіль
    resp = requests.get(
        f"{ADSPOWER_API}/api/v1/browser/start",
        params={"user_id": profile_id}
    )
    data = resp.json()
    if data["code"] != 0:
        raise RuntimeError(f"Помилка AdsPower: {data['msg']}")

    # Підключіть Selenium до браузера, який щойно відкрив AdsPower
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", data["data"]["ws"]["selenium"])
    driver = webdriver.Chrome(options=chrome_options)
    return driver

Якщо ви не знаєте свій ID профілю, спочатку перелічіть усі профілі:

profiles = requests.get(f"{ADSPOWER_API}/api/v1/user/list").json()
for p in profiles["data"]["list"]:
    print(p["user_id"], p.get("name"))

Крок 2: Додавання проксі до профілю

Проксі не є суворо обов'язковим, але він значно підвищує рівень успіху на суворих платформах. AdsPower підтримує проксі HTTP, HTTPS і SOCKS5. Ви можете налаштувати проксі в налаштуваннях профілю AdsPower перед запуском або передати параметри проксі через Local API під час запуску.

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

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

Крок 3: Навігація та захоплення відрендереного HTML

Після підключення драйвера використовуйте Selenium для завантаження цільової URL-адреси та очікування появи контенту. Потім передайте driver.page_source у Beautiful Soup.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

driver = start_adspower_profile("your_profile_id_here")
driver.get("https://www.example.com/products")

# Зачекайте, поки ключовий елемент відрендериться
WebDriverWait(driver, 15).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, ".product-card"))
)

html = driver.page_source
soup = BeautifulSoup(html, "lxml")

Для сторінок, які завантажують більше контенту під час прокрутки, додайте цикл прокрутки перед захопленням вихідного коду:

for _ in range(3):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)

Крок 4: Вилучення даних за допомогою Beautiful Soup

Beautiful Soup product interface

Beautiful Soup product interface.

Тепер ви можете використовувати методи пошуку та навігації Beautiful Soup. Ось приклад, який витягує назви товарів, ціни та посилання з типової сторінки електронної комерції:

products = []
for card in soup.select(".product-card"):
    name_el = card.select_one(".product-title")
    price_el = card.select_one(".product-price")
    link_el = card.select_one("a")

    products.append({
        "name": name_el.get_text(strip=True) if name_el else None,
        "price": price_el.get_text(strip=True) if price_el else None,
        "url": link_el["href"] if link_el else None,
    })

print(products)

Методи select() і select_one() Beautiful Soup приймають CSS-селектори, які зазвичай легше підтримувати, ніж довгі XPath-вирази. Для сторінок із непослідовною розміткою find() з ключовими аргументами пропонує більш гнучкий пошук.

Крок 5: Експорт і коректне завершення

Перетворіть вилучені дані у файл CSV або JSON, потім закрийте драйвер і повідомте AdsPower про закриття профілю:

import pandas as pd

pd.DataFrame(products).to_csv("products.csv", index=False)

driver.quit()
requests.get(
    f"{ADSPOWER_API}/api/v1/browser/stop",
    params={"user_id": "your_profile_id_here"}
)

Завжди зупиняйте профіль через API, а не просто викликаючи driver.quit(). Це звільняє ресурси всередині AdsPower і підтримує стан профілю узгодженим для наступного запуску.

Практичний приклад: Скрапінг сторінки результатів пошуку

Ось повний скрипт, який поєднує всі кроки. Він відкриває профіль AdsPower, шукає на маркетплейсі, чекає на результати та аналізує їх за допомогою Beautiful Soup.

import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

ADSPOWER_API = "http://127.0.0.1:50325"
PROFILE_ID = "your_profile_id_here"
SEARCH_URL = "https://www.example.com/s?q=laptop"

def start_profile(profile_id):
    resp = requests.get(
        f"{ADSPOWER_API}/api/v1/browser/start",
        params={"user_id": profile_id}
    )
    data = resp.json()
    if data["code"] != 0:
        raise RuntimeError(data["msg"])
    opts = Options()
    opts.add_experimental_option("debuggerAddress", data["data"]["ws"]["selenium"])
    return webdriver.Chrome(options=opts)

def stop_profile(profile_id):
    requests.get(
        f"{ADSPOWER_API}/api/v1/browser/stop",
        params={"user_id": profile_id}
    )

driver = start_profile(PROFILE_ID)
try:
    driver.get(SEARCH_URL)
    WebDriverWait(driver, 15).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "[data-testid='result-item']"))
    )
    time.sleep(2)

    soup = BeautifulSoup(driver.page_source, "lxml")
    results = []
    for item in soup.select("[data-testid='result-item']"):
        title = item.select_one("h2")
        price = item.select_one(".price")
        results.append({
            "title": title.get_text(strip=True) if title else "",
            "price": price.get_text(strip=True) if price else "",
        })

    for r in results:
        print(r)
finally:
    driver.quit()
    stop_profile(PROFILE_ID)

Налаштуйте CSS-селектори відповідно до сайту, на який ви націлюєтеся. Використовуйте інструменти розробника браузера для перевірки елементів і підтвердження, які селектори надійно ідентифікують потрібні дані.

AdsPower + Beautiful Soup проти інших підходів

Beautiful Soup product interface

Beautiful Soup product interface.

Підхід Підтримка JavaScript Ізоляція відбитків пальців Складність налаштування Найкраще підходить для
requests + Beautiful Soup Ні Ні Низька Прості статичні сайти без захисту від ботів
Selenium + Beautiful Soup Так Ні (стандартний відбиток браузера) Середня Динамічні сайти з легким захистом
AdsPower + Selenium + Beautiful Soup Так Так (відбиток пальця для кожного профілю) Середньо-висока Захищені сайти, багатоакаунтний скрапінг, великі обсяги
AdsPower + Puppeteer Так Так Середня (Node.js) Команди, які вже використовують інструменти JavaScript

Якщо ваша команда віддає перевагу JavaScript над Python, AdsPower також інтегрується з Puppeteer. Повний посібник з налаштування AdsPower з Puppeteer охоплює еквівалент цього робочого процесу на Node.js. Для ширшого огляду того, як AdsPower порівнюється з іншими антидетект-браузерами щодо ізоляції відбитків пальців та автоматизації, дивіться порівняння AdsPower vs MuLogin vs Maskfog.

Поширені помилки та як їх уникнути

Профіль не запускається: Переконайтеся, що настільний застосунок AdsPower запущено та Local API увімкнено. API працює лише тоді, коли застосунок відкрито.

Selenium не може підключитися: Значення debuggerAddress з відповіді API має бути передано точно. Якщо ви бачите помилку з'єднання, перевірте, чи порт у відповіді збігається з тим, який використовує Selenium.

Вихідний код сторінки порожній або неповний: Сторінка може ще завантажуватися. Використовуйте явні очікування (WebDriverWait) замість фіксованих пауз. Чекайте на конкретний елемент, який вказує на те, що дані відрендерилися.

Отримання CAPTCHA, незважаючи на AdsPower: Відбиток пальця профілю допомагає, але репутація IP також важлива. Використовуйте резидентний проксі або проксі провайдера в профілі та уникайте надсилання занадто багатьох запитів за короткий проміжок часу. Рандомізуйте затримки між завантаженнями сторінок.

Beautiful Soup нічого не повертає: Селектори можуть не відповідати поточному DOM. Збережіть driver.page_source у файл і перевірте його вручну, щоб підтвердити наявність елементів і визначити правильні селектори.

Пов'язані матеріали

Джерела та додаткове читання

Часті запитання

Чи законно скрапити веб-сайти за допомогою AdsPower і Beautiful Soup?

Законність веб-скрапінгу залежить від умов використання цільового сайту, типу даних, які ви збираєте, та вашої юрисдикції. Багато сайтів забороняють автоматизований доступ у своїх умовах. Завжди переглядайте політику сайту, поважайте robots.txt, де це застосовно, і уникайте збору особистих даних без законної підстави. AdsPower і Beautiful Soup — це нейтральні інструменти; те, як ви їх використовуєте, визначає відповідність законодавству.

Чи потрібно знати Python, щоб використовувати цю настройку?

Так, робочий процес Beautiful Soup вимагає Python. Якщо ви віддаєте перевагу варіантам без коду, функція RPA в AdsPower може автоматизувати деякі дії браузера без написання скриптів, але вона не пропонує такої гнучкості аналізу, як Beautiful Soup.

Чи можу я запускати кілька завдань скрапінгу одночасно?

Так. AdsPower підтримує пакетний запуск профілів. Ви можете запустити кілька профілів через Local API, підключити драйвер Selenium до кожного та запустити їх паралельно за допомогою threading або asyncio у Python. Надайте кожному профілю власний проксі, щоб уникнути перетину IP.

Чи працює Beautiful Soup із сайтами, які активно використовують JavaScript?

Beautiful Soup лише аналізує HTML; він не виконує JavaScript. Саме тому в робочому процесі використовується Selenium у профілі AdsPower для попереднього рендерингу сторінки. Після захоплення відрендереного HTML Beautiful Soup виконує аналіз.

Чим це відрізняється від використання Puppeteer з AdsPower?

Puppeteer — це бібліотека Node.js, яка керує Chrome і може також витягувати дані безпосередньо з DOM. Beautiful Soup — це бібліотека Python для аналізу, яка працює з рядками HTML. Стек AdsPower + Selenium + Beautiful Soup добре підходить для команд Python, які віддають перевагу API аналізу Beautiful Soup над маніпуляціями з DOM у JavaScript.

Висновок

AdsPower і Beautiful Soup чудово доповнюють один одного. AdsPower забезпечує ізольоване середовище браузера із захистом відбитків пальців, яке допомагає обійти антибот-захист; Beautiful Soup забезпечує рівень аналізу, який перетворює відрендерений HTML у структуровані дані. Selenium є містком між ними.

Почніть з одного профілю та одного цільового сайту. Налагодьте з'єднання, підтвердьте селектори, а потім масштабуйте до кількох профілів із виділеними проксі. Ця комбінація особливо корисна для моніторингу цін в електронній комерції, дослідження конкурентів, збагачення лідів та будь-яких робочих процесів, де сайти агресивно блокують звичайні скрапери.

Для команд, які оцінюють антидетект-браузери перед прийняттям рішення, порівняння AdsPower vs Octo Browser vs BitBrowser детально розглядає компроміси у відбитках пальців, автоматизації та цінах.

AI INSIGHTS

Need a Quick Summary? Ask AI