大概步骤:
目标效果
四、根据输入值抓取搜索结果数据
- 要点:
- 细心找到数据获取文件
- 跨域axios请求url
- 提取歌曲数据成一个新数组
- 与歌手对象合并成一个数组
- 解决歌曲数组数据异步导致无法进行操作(合并)的问题
(一)、抓取数据
在QQ音乐移动端网页里,输入值,细心查找数据获取
但是双击进去,会发现浏览器没有打开相应的json,而是以下数据
也就是说我们要跨域进行数据请求了
找到相应url跨域需要的数据,和hash数据
↓ build- ->webpack.dev
跨域请求url
//搜索结果数据
before(app) {
app.get('/api/getSearch', (req, res) => {
var url = 'https://c.y.qq.com/soso/fcgi-bin/search_for_qq_cp'
axios.get(url, {
headers: {
referer: 'https://y.qq.com/m/index.html',
host: 'c.y.qq.com'
},
params: req.query // 通过req从浏览器端发过来的一堆参数(platform,sin,ein等)透传给qq的服务端
}).then((response)=>{
// qq服务端的响应数据,再通过res将响应数据输出到浏览器端
res.json(response.data)
}).catch((error)=>{
console.log(error)
})
})
}
↓ api- ->search.js
//搜索结果数据
export function getSearch(query,page,zhida,perpage){
//通过自身模拟服务器访问有host权限的数据
const urlfront = '/api/getSearch'
//把hash做成对象,es6创建对象并赋值,
//固定的ha