Я использую кукловодов для соскоба. Код, который у меня есть в настоящее время, захватывает заголовок каждого продукта на странице и сохраняет его в переменной объекта. Вот код, который у меня есть в настоящее время.
const puppeteer = require("puppeteer");
(async () => {
let movieURL = "https://www.walmart.com/search/?query=&cat_id=91083";
let products = [];
let browser = await puppeteer.launch({ headless: true });
let page = await browser.newPage();
await page.goto(movieURL, { waitUntil: "networkidle2" });
let data = await page.evaluate(() => {
products = [
...document.querySelectorAll("a.product-title-link"),
].map((a) => ({ Product: { Title: a.innerText } }));
return {
products,
};
});
console.log(JSON.stringify(data.products[0]));
await browser.close();
})();
Когда я запускаю код, он показывает мне это.
{"Product":{"Title":"SQ Non Chlorinated Brake Parts Cleaner"}}
Желаемые результаты этого кода будут для него, чтобы показать мне title и price .
{"Product":{"Title":"SQ Non Chlorinated Brake Parts Cleaner", "Price":"12"}}
Как мне сделать так, чтобы title * и ** price объединялись в json. Вот некоторые вещи, которые я сейчас пробовал.
let data = await page.evaluate(() => {
productName = [
...document.querySelectorAll("a.product-title-link"),
].map((a) => ({ Product: { Title: a.innerText } }));
productPrice = [
...document.querySelectorAll("price display-inline-block"),
].map((a) => ({ Product: { Price: a.innerText } }));
return {
productName,
productPrice
};
});
Этот код выше не работает. Любая помощь будет оценена. :)