Vue学习笔记

用JSONP抓取数据

2018-06-26  本文已影响25人  fred_33c7

jsonp,vue,前端
很多网站都是用jsonp传输数据的,可以抓取这些数据。
提供一个封装好的jsonp方法。
首先需要安装jsonp包npm install jsonp

import originJsonp from 'jsonp'

export default function jsonp2(url, data, option) {
  url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)

  return new Promise((resolve, reject) => {
    originJsonp(url, option, (err, data) => {
      if (!err) {
        resolve(data)
      } else {
        reject(err)
      }
    })
  })
}

function param(data) {
  let url = ''
  for (var k in data) {
    let value = data[k] !== undefined ? data[k] : ''
    url += '&' + k + '=' + encodeURIComponent(value)
  }
  return url ? url.substring(1) : ''
}

这样就可以提交param来获取jsonp


image.png

例如这个qq音乐的web端,我们就发现这么一个ajax,用来传输首页得音乐列表。可以用我们上面的方法来获取。

import jsonp from 'common/js/jsonp'
import {commonParams, options} from './config'
import axios from 'axios'

export function getRecommend() {
  const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'

  const data = Object.assign({}, commonParams, {
    platform: 'h5',
    uin: 0,
    needNewCode: 1
  })

  return jsonp(url, data, options)
}

使用时,在组件的methods方法中调用getRecommend()方法,就可以看到了。我们console.log()一下试一试

image.png
发现这个列表我们已经获取到了。
上一篇下一篇

猜你喜欢

热点阅读