【发布时间】:2020-09-12 00:12:15
【问题描述】:
我必须从列表中抓取产品数据,但数据位于这些产品的页面中。例如,假设我要获取产品页面的.product-image。
到目前为止,代码已成功获取每个 URL 并添加到数组中,但我不确定从哪里开始,因为出于某种原因在 urls 之外使用 page 时会返回 Error: Evaluation failed: ReferenceError: page is not defined。
const page = await browser.newPage();
page.waitForNavigation({ timeout: 0, waitUntil: "domcontentloaded" });
await page.goto(siteSearchUrl + 1);
await page.screenshot({ path: "carpet.png" });
const urls = await page.evaluate(() => {
const items = document.querySelectorAll("li.product-item");
const productLinks = [];
console.log(page);
items.forEach((item) => {
const productLink = item
.querySelector("a.product-image") // NOT the product image, it's the link.
.getAttribute("href");
productLinks.push(`${siteUrl + productLink}`);
});
productLinks.forEach((link) => {
page.screenshot({ path: link + ".png" });
}, page);
});
await browser.close();
return Promise.resolve(urls);
})();
我究竟如何从每个链接中收集数据?
【问题讨论】:
标签: node.js web-scraping puppeteer