node.js爬虫 get到的数据是类似ejs的模板字符串应该怎么解决?

发布于 2022-09-06 21:59:23 字数 623 浏览 27 评论 0

练手的一个项目,想爬取网易云上面的歌手信息
代码类似

const request = require('superagent');
const cheerio = require('cheerio');
request
    .get('http://music.163.com/#/discover/artist/cat')
    .accept('text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8')
    .query({
        id: 1001,
        initial: 65
    })

但是爬到的数据是字符串模板:

<li class="j-item" data-userId=${user.userId} data-username=${user.nickname} data-index=${user_index}><a href="#"><img src=${user.avatarUrl}>${user.nickname}</a></li>

应该怎么解决呢?谢谢~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

贩梦商人 2022-09-13 21:59:23

很明显你应该去嵌入html中的script标签中寻找user这个对象了,而不是盯着这个模板看。当然你也可以用phantom.js把页面加载出来再抓取。

只等公子 2022-09-13 21:59:23

首先,你得到${user.userId}说明不是服务器渲染的,那么数据就只能是前端通过js渲染。
然后你有两种方式得到这些数据
一是查看http请求,包括资源文件和XHR,看看哪个请求是得到这些数据的,但这种方式不一定能拿到你想要的页面显示的数据,因为可能有拼接拆分过滤等规则,因此可能要做代码分析。
二是打开一个headless浏览器让js执行完成,再获取元素显示的值,如puppeteer等。

千と千尋 2022-09-13 21:59:23

你可能需要的是这个吧http://music.163.com/discover...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文