CoderCastrov logo
CoderCastrov
Амазон

Как парсить amazon.com с использованием Nodejs

Как парсить amazon.com с использованием Nodejs
просмотров
5 мин чтение
#Амазон

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

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

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

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

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

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

  • [Unirest](https://www.npmjs.com/package/unirest) - С помощью этой библиотеки мы установим HTTP-соединение с веб-страницей Amazon, что позволит нам получить необработанный HTML с нужной целевой страницы.
  • [Cheerio](https://www.npmjs.com/package/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), чтобы упростить процесс извлечения.

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

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

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

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

После того, как вы проинспектируете title, вы увидите, что текст заголовка находится внутри тега h1 с 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, установленным на "title", с помощью селектора $('h1#title').

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

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

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

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

$('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().

Наконец, он присваивает извлеченное текстовое содержимое свойству с именем "Price" в объекте 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. Если вам понравилось это руководство, пожалуйста, поделитесь им с друзьями и в социальных сетях.