从Genius中使用Puppeteer抓取歌词

问题描述 投票:0回答:1

嘿,我想使用pupeteer刮一些天才的歌词,我可以搜索特定的歌曲并浏览歌词的页面

但是当我想获取包含歌词的P标签时,出现此错误

UnhandledPromiseRejectionWarning: TimeoutError:
waiting for selector ".lyrics p" failed:
timeout 30000ms exceeded

代码

  async function scrapelyrics() {
    const browser = await pupeteer.launch();
    const page = await browser.newPage();

    await page.goto('https://genius.com/');
    await page.waitFor('#application > div > div.PageHeaderdesktop__Container-bhx5ui-0.dmNhEr > form > input');
    await page.$eval('#application > div > div.PageHeaderdesktop__Container-bhx5ui-0.dmNhEr > form > input', el => el.value = 'delali');
    await page.click('#application > div > div.PageHeaderdesktop__Container-bhx5ui-0.dmNhEr > form > div');
    // await page.screenshot({path: 'buddy-screenshot.png'});
    await page.waitFor('body > routable-page > ng-outlet > search-results-page > div > div.column_layout > div.column_layout-column_span.column_layout-column_span--primary > div:nth-child(1) > search-result-section > div > div:nth-child(2) > search-result-items > div > search-result-item > div > mini-song-card > a');
    await page.click('body > routable-page > ng-outlet > search-results-page > div > div.column_layout > div.column_layout-column_span.column_layout-column_span--primary > div:nth-child(1) > search-result-section > div > div:nth-child(2) > search-result-items > div > search-result-item > div > mini-song-card > a');
    await page.waitFor('.lyrics p');
    await page.screenshot({
      path: 'buddy-screenshot.png'
    });
    await page.$eval('.lyrics p', (el) => {
      const text = el.textContent;
      console.log(text);
    })

    await browser.close();
  }
javascript puppeteer
1个回答
0
投票

我解决了

© www.soinside.com 2019 - 2024. All rights reserved.