我在 Genius.com 上搜索歌词;我用谷歌搜索,似乎找不到我的代码不起作用的原因。我正在从 Genius.org 页面(即https://genius.com/Britney-spears-baby-one-more-time-lyrics)上的 div 中抓取文本。
查看页面源代码,似乎 div 存在并且在源代码中填充了文本,而不是由 Javascript 或其他方式填充(如果是,那么在这种情况下,cheerio 不会在百分之零的时间内工作吗?)当我运行我的代码时,它有 50% 的时间工作;其他时候它返回一个空。
我看到了这个,但这似乎是一个 hack-ey 解决方案,我真的不明白为什么我的 async/await 不能为来自 phin 的完整响应工作......
这是有问题的代码
const scraperRouter = require('express').Router()
const p = require('phin')
const cheerio = require('cheerio')
scraperRouter.get('/', async (req, res) => {
const url = req.header('geniusUrl')
const _res = await p(url)
try {
let $ = cheerio.load(_res.body)
const lyrics = $('.lyrics').text()
res.send(lyrics)
}
catch (e) {
console.log(e)
res.json(e)
}
})
任何建议表示赞赏。谢谢。