Как парсить amazon.com с использованием Nodejs
В современной эпохе цифрового прогресса владение навыками эффективного парсинга 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. Если вам понравилось это руководство, пожалуйста, поделитесь им с друзьями и в социальных сетях.