Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.
R50 169172a3cc4147ace676354ebce54729
Python

Парсер товаров с сайта Аллегро

Добавлено 06 окт 2023 в 14:39
import requests
from bs4 import BeautifulSoup

def parse_allegro(category, subcategory, filters):
# Собираем URL для запроса
# Применяем фильтры
for filter, value in filters.items():
url += f"&{filter}={value}"
# Отправляем GET-запрос
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Находим все карточки товаров на странице
product_cards = soup.find_all('div', class_='listing-item')
products = []
# Итерируемся по каждой карточке товара
for card in product_cards:
# Получаем данные о товаре
product_info = {}
# Название товара
product_info['title'] = card.find('h2', class_='title').text.strip()
# Цена товара
product_info['price'] = card.find('span', class_='price').text.strip()
# Описание товара
product_info['description'] = card.find('div', class_='description').text.strip()
# Ссылка на карточку товара
product_info['url'] = card.find('a', class_='title')['href']
# Рейтинг товара (если доступно)
rating = card.find('span', class_='rating')
if rating:
product_info['rating'] = rating.text.strip()
# Количество заказов (если доступно)
orders = card.find('span', class_='orders-amount')
if orders:
product_info['orders'] = orders.text.strip()
# Характеристики товара (если доступно)
features = card.find('div', class_='features')
if features:
product_info['features'] = features.text.strip()
# Ссылки на изображения товара
images = card.find_all('img', class_='photo-box__img')
product_info['images'] = [img['src'] for img in images]
# Добавляем данные о товаре в список продуктов
products.append(product_info)
return products

# Пример использования функции

# Указываем категорию, подкатегорию и фильтры
category = "telefony-komorkowe-smartfony"
subcategory = "smartfony"
filters = {
"price_from": "1000",
"price_to": "2000",
"rating_from": "4",
"brand": "Samsung"
}

# Парсим данные с сайта Allegro
parsed_data = parse_allegro(category, subcategory, filters)

# Выводим результаты
for product in parsed_data:
print("Название товара:", product['title'])
print("Цена товара:", product['price'])
print("Описание товара:", product['description'])
print("Ссылка на карточку товара:", product['url'])
print("Рейтинг товара:", product.get('rating'))
print("Количество заказов:", product.get('orders'))
print("Характеристики товара:", product.get('features'))
print("Ссылки на изображения товара:", product['images'])
print("------------------------------------")
734d9418cb