我想从Myntra网站上挖出来。 链接在这里
我用Puppeteer和Node JS来刮它。 它运行良好,但目前我得到了一个错误
Error: Evaluation failed: TypeError: Cannot read property 'textContent' of null
at __puppeteer_evaluation_script__:2:55
函数返回一个空对象。 我在下面附上了我的代码。
null
const puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.myntra.com/jeans/only/only-women-black-skinny-fit-mid-rise-low-distress-stretchable-cropped-jeans/10973332/buy');
const body = await page.evaluate( () => {
return document.querySelector('.pdp-price') ;
});
console.log(body);
await browser.close();
} catch (error) {
console.log(error);
}
})();
null
似乎这个站点正在阻止在user-agent
中指定headlesschrome
的请求,因此我更改了user-agent
,现在一切都按您的需要工作。 请尝试以下代码:
const puppeteer = require('puppeteer');
(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setExtraHTTPHeaders({
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
});
await page.goto('https://www.myntra.com/jeans/only/only-women-black-skinny-fit-mid-rise-low-distress-stretchable-cropped-jeans/10973332/buy');
const body = await page.evaluate(() => {
return document.querySelector('.pdp-price').textContent;
});
console.log(body);
await browser.close();
} catch (error) {
console.log(error);
}
})();
某个对象正在尝试调用.TextContent
,该对象为Null
。 我在您的示例中没有看到它,但是如果QuerySelector('.pdp-price')
这样的代码没有找到任何东西,就会发生这种情况--可能是因为页面还没有完全加载或者选择器没有匹配任何东西。
您可以将其他选项传递给page.goto
以使其等待更长时间,这可能会让内容加载。