Node.js 木偶演员querySelector返回null
我试图用Puppeter删除一些数据,但对于某些站点,querySelector返回null,我不知道是什么错误。我在stackoverflow中找到了一些关于这个问题的答案,但没有一个有效。下面的代码带有一个不起作用的示例链接Node.js 木偶演员querySelector返回null,node.js,web-scraping,jquery-selectors,puppeteer,Node.js,Web Scraping,Jquery Selectors,Puppeteer,我试图用Puppeter删除一些数据,但对于某些站点,querySelector返回null,我不知道是什么错误。我在stackoverflow中找到了一些关于这个问题的答案,但没有一个有效。下面的代码带有一个不起作用的示例链接 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.macys.com/shop/product/the-north-face-mens-
logo-half-dome-t-shirt?ID=2085687&CategoryID=30423&cm_kws=2085687');
const textContent = await page.evaluate(() => {
return document.querySelector('.price');
});
console.log(textContent);
browser.close();
})();
这些元素可能是通过javascript异步加载的,并且在调用.evaluate()时仍不在DOM中 尝试使用Puppeter.waitForSelector函数等待选择器
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.macys.com/shop/product/the-north-face-mens-
logo-half-dome-t-shirt?ID=2085687&CategoryID=30423&cm_kws=2085687');
await page.waitForSelector('.price');
const textContent = await page.evaluate(() => {
return document.querySelector('.price');
});
console.log(textContent);
browser.close();
})();
拍下页面快照后,我的请求被机器人检测系统阻止了。这是解决办法。我们只需要传递更多的数据,这样就不会被检测为机器人。如果它仍然不起作用,你可以退房
谢谢你的回复!我认为问题在于页面没有完全加载,但在拍摄页面快照后,我的请求被机器人检测系统阻止。我会发布解决方案。这让我有了截图的想法,这向我揭示了我实际上是在错误的选项卡上工作的谢谢。我也面临同样的问题。为了澄清如何为未来的读者制作一个木偶剧的屏幕截图,我做了如下操作:wait page.screenshot({path:“./screenshot.jpg”,键入:“jpeg”,fullPage:true});这将在运行脚本后在项目的根文件夹中保存一个屏幕截图。
const puppeteer = require('puppeteer');
// This is where we'll put the code to get around the tests.
const preparePageForTests = async (page) => {
// Pass the User-Agent Test.
const userAgent = 'Mozilla/5.0 (X11; Linux x86_64)' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';
await page.setUserAgent(userAgent);
}
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await preparePageForTests(page);
// await page.setRequestInterception(true);
await page.goto('websiteURL');
const textContent = await page.evaluate(() => {
return {document.querySelector('yourCSSselector').textContent,
}
});
console.log(textContent);
browser.close();