大佬教程收集整理的这篇文章主要介绍了Uncaught (in promise) DOMException: the play() 请求被调用 pause() 中断 - Puppetter,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 Puppetter 抓取此网站 - https://chillhop.com/releases/endless-sunday-vol-2/。所以,到目前为止,我已经能够获得所有曲目、艺术家姓名和曲目持续时间。但是,我还想抓取所有可用音乐曲目的 src。问题在于,播放曲目时,chillhop 网站会动态地将“src”添加到音频元素中。因此,我需要遍历所有曲目,单击它们播放曲目,然后获取“src”。我已经添加了我正在使用的代码,但是,我收到了这个错误:Uncaught (in promisE) DOMException: The play() request was interrupted by call to pause()
这可能是因为循环快速迭代曲目并在当前曲目开始播放之前播放下一曲目。如何等待播放曲目,然后使用 Puppetter 单击下一曲目?
Git 存储库 - https://github.com/Vaasu-Dhand/chillhop-music-scraper。只需运行 npm start
,它就会为您抓取网站并将数据保存到 Json 文件中。
export async function scrape() {
try {
// set some options (set headless to false so we can see this automated browsing experIEncE)
let launchOptions = {
headless: true,executablePath:
'C:/Program files (x86)/Google/Chrome/Application/Chrome.exe',// because we are using puppeteer-core so we must define this option
args: ['--start-maximized'],};
const browser = await puppeteer.launch(launchOptions);
const page = await browser.newPage();
// set vIEwport and user agent (just in case for nice vIEwing)
await page.setVIEwport({ wIDth: 1366,height: 768 });
await page.setUserAgent(
'Mozilla/5.0 (X11; linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/78.0.3904.108 Safari/537.36'
);
// Go to the chillHop Albums Page
await page.goto('https://chillhop.com/releases/');
const albumlinks = await page.$$eval('.release > a',(List) =>
List.map((elm) => elm.href)
); // 12 Albums Load Initaially
// console.log(albumlinks);
for (const [index,albumURL] of albumlinks.entrIEs()) {
// console.log(albumURL);
await page.goto(albumURL);
try {
await page.waitForTimeout(2000) // * MAGIC
await page.$$eval('.List',ListElement => ListElement[1].remove());
let numOfTracks = await page.$$eval('.track-single',(tracks) => tracks.length
);
// [SolVED] the number of tracks come out to be 25 more than the actual number of tracks for some reason
// console.log(numOfTracks);
// Hold for a bit
// await page.waitForTimeout(50000)
if (numOfTracks >= 5) {
let albumname = await page.$eval('div.title-holder h1',(Name) => name.textContent);
let albumartist = await page.$eval('div.title-holder h2',(Name) => name.textContent);
let [imgSrc,imgalt] = await page.$eval('.col-md-6.col-sm-4.fa img',(img) => [img.getAttribute('src'),img.getAttribute('alt')]);
// let audioSrc = await page.$eval('audio#jp_audio_0',(audio) => audio.childNodes
// let releaseDate = await page.$$eval('span.date',date => [...date])
// console.log(albumname,albumartist,imgSrc,imgalt);
let trackData = await page.$$eval('.track-single',(tracks) => {
return tracks.map((track,indeX) => { // Maybe make this async?
track.querySELEctor(`a.track-${track.children[0].getAttribute('data-track')}`).click(); // check if this is working properly
return {
'data-track': track.children[0].getAttribute('data-track'),title: track.querySELEctor('div.tracktitle').textContent,artists: track.querySELEctorAll('div.trackArtists')[0].textContent,duration: track.querySELEctor('div.track-length').textContent,"audio-src": document.querySELEctor('audio').getAttribute('src')
};
});
});
// console.log(trackData);
let albumData = {
"name": albumname,"artist": albumartist,"url": albumURL,"img-src": imgSrc,"img-alt": imgalt,"tracks": trackData
}
if ((index + 1) === albumlinks.length) { // Last Album
appendData(albumData,truE)
} else {
appendData(albumData,falsE)
}
}
} catch (error) { // * If Something Goes Wrong
console.log(error);
conTinue;
}
// formatData(albumData)
}
// close the browser
await browser.close();
} catch (error) {
console.log(error);
}
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Uncaught (in promise) DOMException: the play() 请求被调用 pause() 中断 - Puppetter全部内容,希望文章能够帮你解决Uncaught (in promise) DOMException: the play() 请求被调用 pause() 中断 - Puppetter所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。