【发布时间】:2021-03-25 08:47:54
【问题描述】:
我对 Puppeteer 还很陌生,我正在尝试练习跟踪亚马逊的选定商品。但是,当我尝试从页面检索一些结果时遇到了问题。
我希望这种自动化工作的方式是按照以下步骤操作:
- 新标签。
- 进入亚马逊首页。
- 在搜索元素中输入给定的产品名称。
- 按回车键。
- 返回产品名称和价格。
检查以下示例:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false,
});
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (req) => { // don't load any fonts or images on my requests. To Boost the performance
if (req.resourceType() == 'font' /* || req.resourceType() == 'image' || req.resourceType() == 'stylesheet'*/) {
req.abort();
}
else {
req.continue(); {
}
}
});
const baseDomain = 'https://www.amazon.com';
await page.goto(`${baseDomain}/`, { waitUntil: "networkidle0" });
await page.click("#twotabsearchtextbox" ,{delay: 50})
await page.type("#twotabsearchtextbox", "Bose QuietComfort 35 II",{delay: 50});
await page.keyboard.press("Enter");
await page.waitForNavigation({
waitUntil: 'networkidle2',
});
let productTitle = await page.$$(".a-size-medium, .a-color-base, .a-text-normal")[43]; //varible that holds the title of the product
console.log(productTitle );
debugger;
})();
当我执行此代码时,我会在 console.log 中为变量 productTitle 获得一个未定义的值。从导航到的页面中抓取信息时遇到了很多麻烦。我曾经做过page.evaluate(),它只在我从我告诉浏览器要转到的页面上抓取时才起作用。
【问题讨论】:
标签: javascript node.js puppeteer