美文网首页Vue学习笔记
用JSONP抓取数据

用JSONP抓取数据

作者: fred_33c7 | 来源:发表于2018-06-26 18:31 被阅读25次

    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
    发现这个列表我们已经获取到了。

    相关文章

      网友评论

        本文标题:用JSONP抓取数据

        本文链接:https://www.haomeiwen.com/subject/beumyftx.html