Зачем парсить AliExpress и какие данные можно получить
Если вы занимаетесь дропшиппингом, анализом рынка или автоматизацией закупок, ручной сбор данных с AliExpress отнимает часы. Цены, отзывы, рейтинг продавцов, динамика продаж — вся эта информация нужна для принятия решений, но копировать её вручную нереально при работе с сотнями товаров. Парсинг решает проблему: скрипт на Python соберёт данные за минуты, а вы получите структурированные таблицы для анализа.
На практике с AliExpress парсят:
- каталоги товаров (название, цена, скидки, количество заказов)
- отзывы покупателей (рейтинг, текст, дата, фотографии)
- информацию о продавцах (рейтинг, время ответа, количество followers)
- динамику цен (историю изменений для трекинга лучших предложений)
- данные о доставке (сроки, стоимость, доступные способы)
Важный момент: AliExpress активно блокирует парсинг. Без правильного подхода ваш IP может попасть в бан уже после 50 запросов. В этой статье — рабочие методы обхода защиты, выбор инструментов и готовые примеры кода, которые экономят время.
Выбор инструментов: какие библиотеки использовать
Для парсинга AliExpress на Python есть три основных подхода: готовые API, универсальные библиотеки для скрейпинга и специализированные решения. Вот что нужно знать перед выбором:
1. Готовые API: быстро, но с ограничениями
Сервисы вроде AliExpress Dropshipping API или Admitad Partner API предоставляют легальный доступ к данным, но:
- требуют регистрации и часто платные (от $20/месяц)
- ограничивают количество запросов (например, 1000 в день)
- не дают доступ ко всем полям (например, отзывы могут быть урезаны)
Официальный API AliExpress доступен только для партнёров программы Dropshipping. Для его использования нужно подать заявку и подтвердить бизнес.
Если вам нужны данные для личного использования или тестирования, API — не лучший вариант. Они подходят для бизнеса с официальным статусом.
2. Универсальные библиотеки: гибкость и контроль
Для самостоятельного парсинга используют:
| Библиотека | Преимущества | Недостатки | Когда выбрать |
|---|---|---|---|
requests + BeautifulSoup |
Простота, нет зависимости от браузера | Слабая защита от блокировок, не работает с JS | Простые задачи (цены, названия) |
selenium |
Обрабатывает JavaScript, имитирует пользователя | Медленный, требует установки драйвера | Сложные страницы (отзывы, динамический контент) |
scrapy |
Высокая скорость, асинхронность | Сложный для новичков, нужны прокси | Масштабный сбор данных |
Например, для сбора цен и названий товаров хватит requests, а для парсинга отзывов с подгрузкой "Показать ещё" понадобится selenium.
3. Специализированные решения
Библиотеки вроде aliexpress-python (неофициальный wrapper) упрощают работу, но:
- могут устареть после обновления сайта
- не всегда поддерживают все функции
Их стоит использовать, если вам нужны конкретные данные (например, трекинг заказов), и вы готовы дорабатывать код при изменениях на сайте.
Пошаговая инструкция: как спарсить товары с AliExpress
Рассмотрим универсальный метод с использованием requests и BeautifulSoup для сбора базовой информации о товарах. Этот способ подходит для начинающих и не требует сложной настройки.
Шаг 1: Установка библиотек
Откройте терминал и выполните:
pip install requests beautifulsoup4 fake-useragent
fake-useragent понадобится, чтобы имитировать разные браузеры и снизить риск блокировки.
Шаг 2: Базовый скрипт для парсинга товара
Вот рабочий пример для сбора названия, цены и количества заказов:
from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent
# Настройки
url = "https://www.aliexpress.com/item/123456789.html" # замените на реальный URL
ua = UserAgent()
# Заголовки для имитации браузера
headers = {
"User-Agent": ua.random,
"Accept-Language": "en-US,en;q=0.9",
}
# Получаем страницу
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "lxml")
# Парсим данные
title = soup.select_one("h1.product-title-text").get_text(strip=True)
price = soup.select_one("div.uni-price").get_text(strip=True)
orders = soup.select_one("span.product-order-num").get_text(strip=True)
print(f"Название: {title}")
print(f"Цена: {price}")
print(f"Заказов: {orders}")
📋 Парсинг товара на AliExpress
- Шаг 1. Установите библиотеки
- Шаг 2. Создайте скрипт с заголовками
- Шаг 3. Укажите URL товара
- Шаг 4. Запустите и сохраните данные
Шаг 3: Обход блокировок
AliExpress блокирует парсинг по следующим признакам:
- отсутствие заголовков
User-AgentиAccept-Language - частые запросы с одного IP
- отсутствие куки (например,
aep_usuc_f)
Чтобы избежать бана:
- Используйте
fake-useragentдля случайных заголовков. - Добавьте задержки между запросами (
time.sleep(2)). - Подключите прокси (например,
requests.get(url, proxies={"http": "ip:port"})). - Имитируйте поведение пользователя: сначала открывайте главную страницу, затем переходите к товару.
Без прокси и задержек ваш IP может быть заблокирован после 30-50 запросов. AliExpress использует Cloudflare для защиты.
Шаг 4: Сохранение данных
Чтобы экспортировать данные в CSV, добавьте в скрипт:
import csv
data = [
{"Название": title, "Цена": price, "Заказов": orders}
]
with open("aliexpress_products.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
Парсинг сложных данных: отзывы, динамические элементы
Если вам нужны отзывы, истории цен или данные, которые подгружаются при скролле, requests не подойдёт. Здесь нужен selenium с эмуляцией браузера.
1. Установка и настройка Selenium
Установите библиотеку и драйвер для вашего браузера (например, chromedriver):
pip install selenium webdriver-manager
Базовый скрипт для открытия страницы:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.aliexpress.com/item/123456789.html")
time.sleep(3) # ждём загрузки
# Закрываем попап (если есть)
try:
close_btn = driver.find_element(By.CSS_SELECTOR, ".next-dialog-close")
close_btn.click()
time.sleep(1)
except:
pass
2. Парсинг отзывов
Отзывы на AliExpress подгружаются динамически. Чтобы их спарсить:
- Прокрутите страницу до блока отзывов:
- Нажмите "Показать ещё" (если есть):
- Соберите данные:
reviews_section = driver.find_element(By.CSS_SELECTOR, ".feedback-list")
while True:
try:
show_more = driver.find_element(By.CSS_SELECTOR, ".feedback-load-more-btn")
show_more.click()
time.sleep(2)
except:
break
reviews = driver.find_elements(By.CSS_SELECTOR, ".feedback-item")
for review in reviews:
stars = review.find_element(By.CSS_SELECTOR, ".star-view").get_attribute("class").split()[-1]
text = review.find_element(By.CSS_SELECTOR, ".buyer-feedback").text
date = review.find_element(By.CSS_SELECTOR, ".order-info").text
print(f"Рейтинг: {stars}, Отзыв: {text}, Дата: {date}")
Чтобы ускорить парсинг отзывов, сначала соберите ссылки на все страницы с отзывами, а затем обработайте их параллельно в нескольких окнах браузера.
3. Парсинг истории цен
AliExpress не показывает историю цен напрямую, но её можно отслеживать самостоятельно:
- Создайте базу данных (например, SQLite) для хранения цен.
- Запускайте скрипт раз в сутки, обновляя данные.
- Сравнивайте текущую цену с предыдущими значениями.
Пример структуры таблицы для SQLite:
CREATE TABLE price_history (
product_id TEXT PRIMARY KEY,
title TEXT,
current_price REAL,
previous_price REAL,
date DATETIME DEFAULT CURRENT_TIMESTAMP
);
Нюансы и подводные камни
Даже с правильным кодом вы можете столкнуться с проблемами. Вот что важно учитывать:
1. Изменения в структуре сайта
AliExpress регулярно обновляет верстку. Селекторы, которые работали вчера, сегодня могут вернуть пустоту. Чтобы этого избежать:
- Используйте более универсальные селекторы (например,
div[class*="price"]вместо.uni-price). - Проверяйте код страницы вручную перед запуском скрипта.
- Добавьте в скрипт уведомления об ошибках (например, отправку письма, если данные не собраны).
2. Гео-ограничения и локализация
AliExpress показывает разные цены и ассортимент в зависимости от страны. Если вам нужны данные для конкретного региона:
- Используйте прокси из нужной страны.
- Добавьте в заголовки
"Accept-Language": "ru-RU"для русской версии. - Учитывайте, что некоторые товары могут быть недоступны в вашем регионе.
3. Юридические аспекты
Парсинг AliExpress находится в серой зоне:
- Разрешено: сбор данных для личного использования.
- Под вопросом: использование данных для коммерческих целей (например, перепродажа на своём сайте).
- Запрещено: массовый сбор данных, который нагружает серверы AliExpress.
AliExpress может подать жалобу на массовый парсинг как на DDoS-атаку. Ограничивайте количество запросов (не более 1 запроса в 2-3 секунды).
Типичные ошибки и как их избежать
Ошибка 1: Блокировка по User-Agent
Если вы не указываете User-Agent или используете стандартный ("python-requests/2.28.1"), AliExpress сразу блокирует запрос. Решение: всегда используйте fake-useragent или актуальные заголовки реальных браузеров.
Ошибка 2: Игнорирование CAPTCHA
При интенсивном парсинге AliExpress может показать CAPTCHA. Обойти её сложно, но можно уменьшить риск:
- Используйте прокси с высокой анонимностью (L4/L7).
- Добавьте случайные задержки между действиями (например,
time.sleep(random.uniform(1, 3))). - Имитируйте клики мышью (в
selenium).
Ошибка 3: Парсинг без обработки ошибок
Скрипт может упасть из-за отсутствия элемента на странице. Всегда добавляйте проверки:
try:
price = soup.select_one("div.uni-price").get_text(strip=True)
except AttributeError:
price = "Цена не найдена"
Ошибка 4: Хранение данных в оперативной памяти
При парсинге тысяч товаров скрипт может "съесть" всю память. Решение:
- Сохраняйте данные в файл или базу после обработки каждой страницы.
- Используйте генераторы (
yield) вместо списков.
Как автоматизировать парсинг для бизнеса
Если вам нужно регулярно обновлять данные (например, для мониторинга конкурентов), ручной запуск скриптов неэффективен. Вот как настроить автоматизацию:
1. Запуск по расписанию
Используйте cron (Linux/macOS) или Задачи Windows для запуска скрипта, например, каждый день в 3 часа ночи:
- Для
cronдобавьте строку:
0 3 * * * /usr/bin/python3 /путь/к/скрипту.py - Для Windows создайте задачу в "Планировщике задач" с триггером "Ежедневно".
2. Уведомления об изменениях
Добавьте в скрипт отправку уведомлений, если:
- цена на товар упала ниже заданного порога
- появились новые отзывы с рейтингом ниже 3 звёзд
- товар стал недоступен
Пример с отправкой письма через smtplib:
import smtplib
from email.message import EmailMessage
def send_email(subject, body):
msg = EmailMessage()
msg.set_content(body)
msg["Subject"] = subject
msg["From"] = "your_email@gmail.com"
msg["To"] = "recipient@example.com"
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login("your_email@gmail.com", "app_password")
server.send_message(msg)
if current_price < min_price:
send_email(
"Цена упала!",
f"Товар {title} теперь стоит {current_price}. Ссылка: {url}"
)
3. Масштабирование: работа с тысячами товаров
Для парсинга больших объёмов:
- Используйте
scrapyс асинхронными запросами. - Распределяйте задачи по нескольким серверам (например, через
Scrapy + Scrapyd). - Храните данные в базе (PostgreSQL, MongoDB).
Пример архитектуры для масштабного парсинга
1. Главный сервер распределяет URL-ы товаров между рабочими узлами.
2. Каждый узел парсит данные и отправляет их в очередь (RabbitMQ).
3. Отдельный скрипт сохраняет данные из очереди в базу.
4. Мониторинг логирует ошибки и отправляет уведомления в Telegram.
Альтернативные способы получения данных с AliExpress
Если парсинг кажется слишком сложным или рискованным, рассмотрите альтернативы:
1. Готовые датасеты
На платформах вроде Kaggle или Zenrows можно найти уже собранные данные по AliExpress:
- Плюсы: не нужно парсить, данные структурированы.
- Минусы: информация может быть устаревшей, ограниченный набор полей.
2. Сервисы парсинга
Компании вроде Apify, ScraperAPI или Bright Data предлагают облачные решения:
| Сервис | Стоимость | Преимущества |
|---|---|---|
| Apify | От $0.5 за 1000 запросов | Готовые акторы для AliExpress, обход блокировок |
| ScraperAPI | От $29/месяц | Прокси и CAPTCHA-решатели в комплекте |
| Bright Data | От $500/месяц | Высокий уровень анонимности, поддержка |
Эти сервисы подходят, если вам нужны данные регулярно, но нет времени поддерживать собственную инфраструктуру.
3. Официальные партнёрские программы
Если вы дропшиппер, рассмотрите:
- AliExpress Dropshipping Center: доступ к аналитике и API для партнёров.
- Admitad/EPN: кэшбэк-сервисы с данными по товарам для аффилиатов.
☑️ Выбор метода получения данных
Что делать, если AliExpress заблокировал ваш IP
Блокировка IP — распространённая проблема при парсинге. Вот как её решить:
1. Смена IP-адреса
Способы:
- Переподключитесь к интернету (если у вас динамический IP).
- Используйте мобильный интернет (4G/5G).
- Подключите платные прокси (рекомендуются резидентные прокси от
LuminatiилиSmartproxy).
2. Очистка куки и кэша
Если блокировка связана с браузером:
- Очистите куки для домена
aliexpress.com. - Используйте режим инкогнито или новый профиль браузера.
- Смените
User-Agent.
3. Обратная связь с поддержкой
Если блокировка постоянная и мешает работе:
- Напишите в поддержку AliExpress, объяснив, что это была ошибка (например, "тестировал скрипт для личного использования").
- Приложите скриншоты ошибок (без упоминания парсинга).
- Используйте другой аккаунт, если основной заблокирован.
Парсинг AliExpress на Python требует обхода защиты, правильных заголовков и прокси. Начните с простых скриптов на requests, для сложных задач используйте selenium. Автоматизируйте сбор данных, но следите за легальностью и ограничениями.