Простой парсер товаров с Amazon с помощью BeautifulSoup

Тема в разделе "Python", создана пользователем Dotrox, 31 авг 2016.

  1. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.063
    Симпатии:
    1.228
    Для знакомства с парсингом на Python и таким прекрасным инструментом для этого, как BeautifulSoup, напишем небольшой парсер товаров с Amazon.
    В данном примере я буду использовать Python 2.7, для 3.x нужно будет внести некоторые правки.
    Из библиотек нам понадобится BeautifulSoup и requests, а также time для задания паузы между обращениями к серверу Amazon, чтоб парсер не забанили. Вместо requests можно использовать urllib2, но это добавит ручной работы.

    Для примера будем парсить категорию мониторов:


    Основной контент здесь находится в блоке #mainResults. Контейнер отдельного товара имеет класс s-result-item.
    На странице категории нас будут интересовать только ссылки на отдельные товары, а информацию о товарах будем брать со страниц товаров.

    1. Импортируем необходимые библиотеки, прописываем заголовок с User-agent, чтоб выдать себя за браузер и отправляем GET запрос к Amazon с помощью Requests:


    2. Теперь надо создать экземпляр BeautifulSoup и передать в него содержимое полученной страницы.


    3. Теперь соберём со страницы ссылки на товары.


    4. Получив список ссылок на товары можно начать обход страниц товаров и получение информации о каждом товаре.


    После работы парсера вы должны увидеть нечто подобное:


    Полный код из этой статьи выглядит так:
     
    Последнее редактирование: 23 ноя 2016
    Zulus, Jess23, samuel_L и ещё 1-му нравится это.
  2. Skladchina

    Skladchina

    Регистрация:
    15 янв 2019
    Сообщения:
    5
    Симпатии:
    0
    Ожидаются ли еще такие же занимательные примеры? Очень понравилось. У Python 3.x трудности со всеми кодировками, кроме UTF-8, лучше и правда 2.х.
     
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.063
    Симпатии:
    1.228
    Спрос слишком маленький.

    Не припомню необходимости в кодировках отличных от UTF-8, так что на счёт трудностей ничего не скажу, но с UTF-8 в тройке стало как раз лучше.

    А двойку уже поздно использовать, у неё поддержка заканчивается 1 января 2020.
    Туториалу этому то уже больше двух лет, тогда в двойке ещё был смысл. Если не ошибаюсь, BeautifulSoup тогда из коробки ещё даже не поддерживал тройку, нужно было самостоятельно пропускать через 2to3.