nodejs抓取动态网页(我的代码段捕获显示在链接上的第一个产品的URL)
优采云 发布时间: 2021-12-23 02:12nodejs抓取动态网页(我的代码段捕获显示在链接上的第一个产品的URL)
这是我的代码片段:
nightmare
.goto('https://www.stadiumgoods.com/catalogsearch/result/?q=BV4594-001')
.wait('body')
.evaluate(() => document.querySelector('body').innerHTML)
.end()
.then(response => {
const $ = cheerio.load(response);
console.log($('.item > a').attr('href'));
此代码段捕获链接上显示的第一个产品的 URL。但是,这个过程只需要30秒就可以得到链接。
有什么办法可以让这个过程更快?也许使用 Nightmare 以外的其他 npm 包?我曾尝试使用 puppeteer,但对我来说,它不适用于这个特定的 网站。
最佳答案
我建议做的是:
再次尝试Puppeteer,因为从Nightmare 到Puppeteer 的转换并不容易。使用以下代码防止加载 CSS 和图像:
等待 page.setRequestInterception(true);
page.on('request', (req)=> {
if(req.resourceType()=='样式表'|| req.resourceType()=='字体'|| req.resourceType()=='图片'){
req.abort();
}
其他{
req.continue();
}
});
最后,就像提到的其他评论一样:它还取决于网络速度和运行脚本的服务器/PC 的功能。
干杯!
关于node.js-在NodeJS上使用Nightmare(PhantomJS)获取动态网页时间过长。我怎样才能使这个过程更快? , 我们在 Stack Overflow 上发现了一个类似的问题: