Вы всегда можете найти всю необходимую и ценную информацию о товарах, продавцах, отзывах, рейтингах, спецпредложениях, новостях и т. д. на Amazon. Будь то продавец, проводящий рыночный анализ, или частное лицо, собирающее данные, использование высококачественного, удобного и быстрого инструмента поможет вам максимально точно собирать различную информацию с Amazon.
Amazon собирает ценную информацию в одном месте: товары, отзывы, рейтинги, эксклюзивные предложения, новости и т. д. Поэтому парсинг данных на Amazon в значительной степени позволит избежать трудоемких и затратных по времени проблем. Как бизнес, использование Amazon product scraper может принести вам как минимум следующие 4 значительных преимущества:
Бесголовые браузеры отлично справляются с автоматизированной работой? Верно, мы будем использовать самый мощный сервис бесголовых браузеров от Nstbrowser: Browserless для сбора информации о товарах на Amazon.
При сборе данных о товарах на Amazon мы всегда сталкиваемся с рядом серьезных проблем, таких как обнаружение ботов, распознавание проверочных кодов и блокировка IP. Использование Browserless позволяет полностью избежать этих головных болей!
Browserless от Nstbrowser предоставляет реальные отпечатки браузеров пользователей, причем каждый отпечаток уникален. Кроме того, участие в нашем абонентском плане позволяет полностью обойти CAPTCHA, обеспечивая беспрепятственный доступ. Присоединяйтесь к нашей Discord программе рефералов, чтобы получить $1,500 наличными уже сейчас!
Не откладывая, давайте начнем официально использовать Browserless для сбора данных!
Прежде чем начать, нам нужно подключиться к сервису Browserless. Использование Browserless позволяет решать сложные задачи веб-скрапинга и автоматизации в большом масштабе, и вы можете по-настоящему насладиться полностью управляемым облачным развертыванием.
Browserless использует браузерно-ориентированный подход, обеспечивает мощные возможности бесголового развертывания и обеспечивает более высокую производительность и надежность. Дополнительную информацию о Browserless вы можете найти в нашей соответствующей документации.
Получите API KEY и перейдите на страницу меню Browserless в клиенте Nstbrowser или вы можете нажать здесь, чтобы получить к ней доступ напрямую.

# pnpm
pnpm i puppeteer-core
# yarn
yarn add puppeteer-core
# npm
npm i --save puppeteer-core
const apiKey = "your ApiKey"; // required
const config = {
proxy: 'your proxy', // required; input format: schema://user:password@host:port eg: http://user:password@localhost:8080
// platform: 'windows', // support: windows, mac, linux
// kernel: 'chromium', // only support: chromium
// kernelMilestone: '128', // support: 128
// args: {
// "--proxy-bypass-list": "detect.nstbrowser.io"
// }, // browser args
// fingerprint: {
// userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.85 Safari/537.36', // userAgent supportted since v0.15.0
// },
};
const query = new URLSearchParams({
token: apiKey, // required
config: JSON.stringify(config),
});
const browserlessWSEndpoint = `https://less.nstbrowser.io/connect?${query.toString()}`;
Перед скрапингом мы можем попробовать перейти на https://www.amazon.com/. Если это первый визит, велика вероятность появления проверочного кода:

Но это не имеет значения, нам не нужно прилагать больших усилий, чтобы найти инструмент для декодирования проверочных кодов. В этом случае вам нужно только посетить домен Amazon в вашем регионе или в регионе вашего прокси, и проверочный код не будет активирован.
Например, давайте посетим: https://www.amazon.co.uk/: домен Amazon в Великобритании. Мы видим, что страница открывается без проблем, затем попробуйте ввести нужное ключевое слово продукта в верхней строке поиска или перейдите по ссылке напрямую, например:
https://www.amazon.co.uk/s?k=shirt
Значение после /s?k= в URL - это ключевое слово продукта. Перейдя по этой ссылке, вы увидите товары, связанные с рубашками на Amazon. Теперь вы можете открыть "Инструменты разработчика" (F12), чтобы проверить HTML-структуру страницы и подтвердить данные, которые нам нужно будет парсить в дальнейшем, позиционируя курсор.

Сначала я добавил строку кода в начале скрипта. В следующем коде используется первый параметр скрипта в качестве ключевого слова товара на Amazon, и последующие скрипты также будут использовать этот параметр для сбора данных:
const productName = process.argv.slice(2);
if (productName.length !== 1) {
console.error('product name CLI arguments missing!');
process.exit(2);
}
Далее нам нужно:
import puppeteer from "puppeteer-core";
const browser = await puppeteer.connect({
browserWSEndpoint: browserlessWSEndpoint,
defaultViewport: null,
})
console.info('Connected!');
const page = await browser.newPage();
await page.goto(`https://www.amazon.co.uk/s?k=${productName}`);
// Добавление скриншотов для облегчения последующей отладки
await page.screenshot({ path: 'amazon_page.png' })
Теперь мы используем page.$$, чтобы получить список всех товаров, перебрать список товаров и по одному получить нужные данные в цикле. Затем мы соберем эти данные в массив productDataList и распечатаем его:
// Получение контейнера всех элементов результатов поиска
const productContainers = await page.$$('div[data-component-type="s-search-result"]')
const productDataList = []
// Получение различной информации о товаре: название, рейтинг, ссылка на изображение, цена
for (const product of productContainers) {
async function safeEval(selector, evalFn) {
try {
return await product.$eval(selector, evalFn);
} catch (e) {
return null;
}
}
const title = await safeEval('.s-title-instructions-style > h2 > a > span', node => node.textContent)
const rate = await safeEval('a > i.a-icon.a-icon-star-small > span', node => node.textContent)
const img = await safeEval('span[data-component-type="s-product-image"] img', node => node.getAttribute('src'))
const price = await safeEval('div[data-cy="price-recipe"] .a-offscreen', node => node.textContent)
productDataList.push({ title, rate, img, price })
}
console.log('amazon_product_data_list :', productDataList);
await browser.close();
Запуск скрипта:
node amazon.mjs shirt
В случае успеха на консоль будет выведено следующее:

Очевидно, что для более качественного анализа данных недостаточно просто распечатать их на консоль. Вот простой пример: быстро преобразуйте объект JS в JSON-файл с помощью fs модуля:
import fs from 'fs'
function saveObjectToJson(obj, filename) {
const jsonString = JSON.stringify(obj, null, 2)
fs.writeFile(filename, jsonString, 'utf8', (err) => {
err ? console.error(err) : console.log(`File saved successfully: ${filename}`);
});
}
saveObjectToJson(productDataList, 'amazon_product_data.json')
Хорошо, давайте посмотрим на наш полный код:
import puppeteer from "puppeteer-core";
import fs from 'fs'
const productName = process.argv.slice(2);
if (productName.length !== 1) {
console.error('product name CLI arguments missing!');
process.exit(2);
}
const apiKey = "your ApiKey"; // 'your proxy'
const config = {
proxy: 'your proxy', // required; input format: schema://user:password@host:port eg: http://user:password@localhost:8080
// platform: 'windows', // support: windows, mac, linux
// kernel: 'chromium', // only support: chromium
// kernelMilestone: '128', // support: 128
// args: {
// "--proxy-bypass-list": "detect.nstbrowser.io"
// }, // browser args
// fingerprint: {
// userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.85 Safari/537.36', // userAgent supportted since v0.15.0
// },
};
const query = new URLSearchParams({
token: apiKey, // required
config: JSON.stringify(config),
});
const browserlessWSEndpoint = `https://less.nstbrowser.io/connect?${query.toString()}`;
const browser = await puppeteer.connect({
browserWSEndpoint: browserlessWSEndpoint,
defaultViewport: null,
})
console.info('Connected!');
const page = await browser.newPage();
await page.goto(`https://www.amazon.co.uk/s?k=${productName}`);
// Добавление скриншотов для облегчения последующей отладки
await page.screenshot({ path: 'amazon_page.png' })
// Получение контейнера всех элементов результатов поиска
const productContainers = await page.$$('div[data-component-type="s-search-result"]')
const productDataList = []
// Получение различной информации о товаре: название, рейтинг, ссылка на изображение, цена
for (const product of productContainers) {
async function safeEval(selector, evalFn) {
try {
return await product.$eval(selector, evalFn);
} catch (e) {
console.log(`Error fetching ${selector}:`, e);
return null;
}
}
const title = await safeEval('.s-title-instructions-style > h2 > a > span', node => node.textContent)
const rate = await safeEval('a > i.a-icon.a-icon-star-small > span', node => node.textContent)
const img = await safeEval('span[data-component-type="s-product-image"] img', node => node.getAttribute('src'))
const price = await safeEval('div[data-cy="price-recipe"] .a-offscreen', node => node.textContent)
productDataList.push({ title, rate, img, price })
}
function saveObjectToJson(obj, filename) {
const jsonString = JSON.stringify(obj, null, 2)
fs.writeFile(filename, jsonString, 'utf8', (err) => {
err ? console.error(err) : console.log(`File saved successfully: ${filename}`);
});
}
saveObjectToJson(productDataList, 'amazon_product_data.json')
console.log('amazon_product_data_list :', productDataList);
await browser.close();
Теперь, после запуска скрипта, вы можете не только увидеть печать на консоли, но и файл amazon_product_data.json, который был записан в текущей папке.

Вы можете просмотреть статистику последних запросов и оставшегося времени сеанса в меню Browserless клиента Nstbrowser.

Использование инструментов RPA для сбора веб-данных является распространенным методом сбора данных. Использование инструментов RPA может значительно повысить эффективность сбора данных и снизить стоимость сбора. Функция Nstbrowser RPA может обеспечить вам лучший опыт RPA и максимальную эффективность работы.
Прочитав этот учебник, вы:
Сначала у вас должна быть учетная запись Nstbrowser, а затем войдите в клиент Nstbrowser, перейдите на страницу рабочего процесса модуля RPA и нажмите "Новый рабочий процесс".
Теперь мы можем начать настройку рабочего процесса сбора RPA на основе результатов поиска товаров на Amazon.

Переход по ссылке, настройте URL-адрес сайта, и вы сможете посетить целевой сайт:
На этот раз мы не будем использовать метод запроса соответствующего продукта по URL, а используем RPA, чтобы помочь ввести текст в поле ввода на домашней странице, а затем запустить переход к поиску. Это не только сделает нас более знакомыми с работой RPA, но и позволит в значительной степени избежать контроля сайта на предмет рисков.
Хорошо, после перехода на целевой сайт нам нужно сначала найти целевой адрес. Здесь нам нужно использовать инструмент Chrome Devtool, чтобы найти HTML-элемент.

Добавьте узел Ввод текста:
id, который мы определили в поле вводаТаким образом, мы завершили действие ввода текста в поле ввода.

Клавиатура, чтобы симулировать действие ввода с помощью клавиши Enter для поиска товаров:
Поскольку страница поиска будет переходить на новую страницу, нам нужно добавить действие ожидания, чтобы убедиться, что мы успешно загрузили страницу с результатами. Nstbrowser RPA предоставляет два варианта ожидания: Ожидание времени и Ожидание запроса.
Ожидание времени: используется для ожидания в течение определенного периода времени. Вы можете выбрать фиксированное время или случайное время в зависимости от конкретной ситуации.Ожидание запроса: используется для ожидания завершения сетевого запроса. Применимо для получения данных через сетевые запросы.
Хорошо, теперь мы успешно видим новую страницу поиска товаров, и следующий шаг - парсинг этого контента.
Присмотревшись, мы видим, что результаты поиска на Amazon отображаются в виде списка карточек. Это очень классический способ отображения:
Точно так же откройте инструмент Devtool и найдите каждый элемент данных в карточке:

Поскольку каждый элемент в списке карточек является HTML-элементом, нам нужно использовать узел Цикл по элементам для перебора всех результатов поиска. Мы заполняем CSS-селектор списка product в Селекторе и выбираем Объект элемента для Типа данных, что означает получение целевого элемента и сохранение его как объекта элемента в переменную. Установите имя переменной product в параметре Сохранить данные в переменной и сохраните индекс как productIndex.

Далее нам нужно обработать каждый пройденный элемент и получить необходимую информацию из product. Мы получаем элемент заголовка продукта. Здесь нам нужно использовать узел Получить данные элемента, чтобы получить его и в итоге сохранить как переменную title.
Выберите Дочерние элементы в качестве Типа данных, что означает получение дочерних элементов целевого элемента и сохранение их как объекта элемента в переменную title. Вам нужно заполнить селектор элемента дочернего элемента. CSS-селектор, введенный здесь, - это, естественно, CSS-селектор заголовка продукта:

Затем мы используем тот же метод для преобразования остальной информации о продукте: рейтинга, ссылок на изображения и цен, в процессы RPA.
'title' .s-title-instructions-style > h2 > a > span
'rate' a > i.a-icon.a-icon-star-small > span
'img' span[data-component-type="s-product-image"] img
'price' div[data-cy="price-recipe"] .a-offscreen

Однако переменные данные, полученные выше, на самом деле являются HTML-элементами. Нам все еще нужно обработать их, чтобы вывести текст в HTML-элементах и подготовить к последующему хранению данных.
Нам нужно

Добавьте снова узел Получить данные элемента, чтобы вывести полученные выше переменные в виде текста и сохранить их в табличной переменной для последующего хранения данных. Выберите Тип данных Текст, чтобы получить innerText целевого элемента. (На рисунке ниже показана обработка переменной title)

Затем мы используем тот же метод, чтобы преобразовать рейтинг и цену продукта в окончательную текстовую информацию.
Ссылка на изображение требует дополнительной обработки. Здесь мы используем узел javascript, чтобы получить src изображения текущего пройденного продукта. Обратите внимание, что переменная индекса productIndex, сохраненная узлом Цикл по элементам, должна быть введена в сценарий и в итоге сохранена как переменная imgSrc.

return document.querySelectorAll('[data-image-latency="s-product-image"]')[productIndex].getAttribute('src')
Наконец, мы используем узел "Установить переменную", чтобы сохранить переменную imgSrc в таблицу:

На этом этапе мы получили все данные, которые хотим собрать, и пришло время сохранить эти данные.
Сохранить в файл и Сохранить в Excel.Сохранить в файл предоставляет три типа файлов на выбор: .txt, .CSV и .JSON.Сохранить в Excel позволяет сохранять данные только в файлы Excel.Для удобства просмотра мы выбираем сохранение собранных данных в Excel. Добавьте узел Сохранить в Excel, настройте путь к файлу и имя файла, который нужно сохранить, выберите табличное содержимое, которое нужно сохранить, и все готово!

Сначала сохраните настроенный рабочий процесс, затем вы можете запустить его непосредственно на текущей странице или вернуться на предыдущую страницу, создать новые задачи и нажать кнопку "Запустить", чтобы запустить его. На этом этапе мы можем начать сбор данных о товарах на Amazon!
После завершения выполнения вы увидите файл amazon-product-data.xlsx, созданный на рабочем столе.

Самый простой способ скрапинга товаров на Amazon - создать свой собственный Amazon product scraper с помощью Browserless. Эта самая полная учебная статья 2024 года ясно объясняет вам:
Особо интересуетесь веб-данными? Посмотрите наш рынок RPA. Nstbrowser подготовил 20 мощных программ RPA, которые могут решить все ваши проблемы во всех аспектах.
**Если у вас есть особые потребности в Browserless, парсинге данных или автоматизации, пожалуйста, свяжитесь с нами вовремя. Мы готовы предоставить вам высококачественные индивидуальные услуги.
Отказ от ответственности: Любые данные и сайты, упомянутые в этой статье, используются только для демонстрационных целей. Мы решительно против незаконных и нарушающих авторские права действий. Если у вас есть вопросы или опасения, пожалуйста, немедленно свяжитесь с нами.