В современную эпоху цифровых технологий приобретение навыков эффективного парсинга Amazon может сильно повлиять как на предприятия, так и на отдельных лиц. Поскольку гиганты электронной коммерции, такие как Amazon, продолжают доминировать в сфере онлайн-покупок, чтобы оставаться впереди конкурентов, необходимо использовать всю мощь данных.

Овладев искусством парсинга Amazon, вы сможете получить бесценную информацию о продуктах, отслеживать тенденции ценообразования и быть в курсе последних отзывов клиентов. Эти знания могут изменить правила игры, дав вам возможность принимать обоснованные решения и оставаться на шаг впереди в постоянно развивающемся мире электронной коммерции.

В этом всеобъемлющем руководстве мы подробно рассмотрим преимущества использования Nodejs для парсинга Amazon и покажем, как вы можете извлекать жизненно важную информацию для поддержки принятия обоснованных решений как в бизнесе, так и в личных начинаниях. Если вы хотите очистить его с помощью Python, проверьте наш веб-скрапинг Amazon с помощью Python.

Приготовьтесь раскрыть скрытые данные Amazon и воспользоваться потенциалом Nodejs, чтобы оставаться впереди в динамичной и постоянно развивающейся сфере электронной коммерции!

Настройка предварительных условий

Я предполагаю, что вы уже установили nodejs на свой компьютер. Если нет, то вы можете скачать его здесь. Кроме того, нам потребуются две библиотеки Python третьей стороны.

  • Unirest- С помощью этой библиотеки мы установим HTTP-соединение с веб-страницей Amazon, что позволит нам получить необработанный HTML-код с нужной целевой страницы.
  • Cheerio — эта надежная библиотека анализа данных помогает извлекать необходимые данные из необработанного HTML-кода, полученного с помощью библиотеки unirest.

Прежде чем мы установим эти библиотеки, нам нужно будет создать специальную папку для нашего проекта.

mkdir amazonscraper

Теперь нам нужно будет установить две вышеуказанные библиотеки в эту папку. Вот как вы можете это сделать.

npm i — save unirest cheerio

Теперь вы можете создать файл nodejs под любым именем. Это будет основной файл, в котором мы будем хранить наш код. Я называю это amazon.js.

Загрузка необработанных данных с amazon.com

Давайте сделаем обычный запрос GET на нашу целевую страницу и посмотрим, что произойдет. Для запроса GET мы будем использовать библиотеку unirest.

const cheerio = require('cheerio')
var unirest = require('unirest');


async function amazon(){
  let amazon_url = "https://www.amazon.com/dp/B0BSHF7WHW"
  head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}
  let data = await unirest.get(amazon_url).headers(head)

  return {message:data.body}
}


amazon().then((data) => {
  console.log(data.message)
})

Вот что мы сделали.

  • Мы импортировали обе библиотеки, которые скачали ранее.
  • Затем внутри функции amazon() мы объявили целевой URL-адрес Amazon и заголовки.
  • Затем мы делаем запрос GET, используя unirest на целевую страницу.
  • Затем мы возвращаем результаты из того места, где была вызвана функция.

Как только вы запустите этот код, вы получите полный необработанный HTML-адрес URL на своей консоли.

Что мы собираемся собрать с Amazon?

Заблаговременное планирование и определение конкретных данных, которые необходимо извлечь с целевой страницы, является разумным подходом. Это позволяет нам заранее анализировать размещение различных элементов в объектной модели документа (DOM) для оптимизации процесса извлечения.

Для этого урока мы собираемся очистить две вещи:

  1. Название продукта
  2. Цена продукта

Но прежде чем мы начнем, давайте рассмотрим расположение каждого из этих элементов в DOM.

Определение местоположения каждого элемента

Давайте сначала найдем, где хранится тег title.

Осмотрев title, вы обнаружите, что текст заголовка находится внутри h1 tag с id title.

Здесь мы будем использовать Cheerio, чтобы получить текст из необработанных данных, которые мы загрузили ранее.

const $ = cheerio.load(data.body);

$('h1#title').each((i,el) => {
    o['Title']=$(el).text().trim()
})

Этот фрагмент кода Node.js использует библиотеку cheerio для загрузки тела HTML-документа, хранящегося в объекте data. Затем он выбирает все элементы <h1> с атрибутом id, установленным на «заголовок», используя селектор $('h1#title').

Для каждого из этих выбранных элементов код выполняет функцию обратного вызова (i,el) => {...} с использованием метода .each(). В этой функции обратного вызова она извлекает текстовое содержимое выбранного элемента <h1>, используя $(el).text(), и обрезает все начальные или конечные пробелы, используя .trim().

Наконец, он присваивает извлеченный текстовый контент свойству с именем «Заголовок» в объекте o, используя o['Title']=$(el).text().trim(). Результирующий объект o будет содержать извлеченное текстовое содержимое из элемента <h1> с идентификатором title в HTML-документе.

Теперь давайте найдем расположение ценника.

Мы видим, что ценник хранится внутри span tag с классом a-price. Как только вы найдете этот тег, вы можете найти первый child span tag, чтобы узнать цену. Вот как вы можете это сделать.

$('span.a-price').each((i,el) => {
    o['Price']=$(el).find('span').first().text()
})

Этот фрагмент кода использует синтаксис jQuery с библиотекой Cheerio для выбора и перебора всех элементов с классом «a-price» в HTML-документе.

Для каждого выбранного элемента код выполняет функцию обратного вызова (i, el) => {...} с использованием метода .each(). В этой функции обратного вызова он находит первый элемент <span> в выбранном элементе, используя $(el).find('span').first(), и извлекает текстовое содержимое этого элемента, используя .text().

Наконец, он присваивает извлеченный текстовый контент свойству с именем «Цена» в объекте o, используя o['Price']=$(el).find('span').first().text(). Результирующий объект o будет содержать извлеченное текстовое содержимое из первого элемента <span> с классом 'a-price' в HTML-документе, который обычно используется для извлечения цен на продукты, указанные на веб-странице.

Наконец-то нам удалось найти и извлечь данные со страницы Amazon. Давайте запустим код и посмотрим, что мы получим на выходе.

Полный код

Конечно, вы можете извлечь со страницы множество других вещей, таких как изображения, обзоры и т. д. Но пока код будет выглядеть так.

const cheerio = require('cheerio')
var unirest = require('unirest');

let l=[]
let o={}
async function amazon(){
  let amazon_url = "https://www.amazon.com/dp/B0BSHF7WHW"
  head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}
  let data = await unirest.get(amazon_url).headers(head)
  const $ = cheerio.load(data.body);

  $('h1#title').each((i,el) => {
    o['Title']=$(el).text().trim()
  })

  $('span.a-price').each((i,el) => {
    o['Price']=$(el).find('span').first().text()
  })

  l.push(o)
  return {message:l}
}


amazon().then((data) => {
  console.log(data.message)
})

Заключение

В этом руководстве мы рассмотрели процесс извлечения данных из Amazon с помощью Nodejs. Мы начали с использования библиотеки unirest для загрузки необработанного HTML-кода целевой страницы, а затем использовали Cheerio для анализа необходимых нам данных. Nodejs, наряду с его различными библиотеками, упрощает просмотр веб-страниц даже для новичков. По мере роста ваших потребностей в парсинге вы можете рассмотреть возможность использования API парсинга веб-страниц для обработки крупномасштабного извлечения данных с нескольких страниц.

Чтобы еще больше повысить масштабируемость вашего парсера, вы можете комбинировать запросы с Scrapingdog, что может обеспечить вероятность успеха более 99% при парсинге Amazon. Если вы нашли этот урок полезным, поделитесь им с друзьями и в социальных сетях.