В современную эпоху цифровых технологий приобретение навыков эффективного парсинга 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) для оптимизации процесса извлечения.
Для этого урока мы собираемся очистить две вещи:
- Название продукта
- Цена продукта
Но прежде чем мы начнем, давайте рассмотрим расположение каждого из этих элементов в 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. Если вы нашли этот урок полезным, поделитесь им с друзьями и в социальных сетях.