为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

宝慕林4294392 2019-03-04 16:16:04
练手的一个项目,想爬取网易云上面的歌手信息代码类似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>应该怎么解决呢?谢谢~
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-03-25
?
繁星coding

TA贡献1797条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-25
  • 3 回答
  • 0 关注
  • 565 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号