• vue项目中jsonp抓取数据实现方式


    先安装依赖:cnpm install --save jsonp

    代码如下:

    1. 然后创建一个jsonp.js
      import originJSONP from 'jsonp'   //引用jsonp

      export default function jsonp(url,data,options){
        //地址判断和调用处理地址函数

        url +=(url.indexOf('?')<0?'?':'&')+param(data)

        //返回一个Promise

        return new Promise((resolve,reject)=>{
          originJSONP(url,options,(err,data)=>{  //用原始的jsonp调用有三个参数

            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):''
      }

    2.自己创建个api文件夹

      创建一个recomm.js,config  主要用途是处理请求地址url和头部的公共参数

      代码如下:

      引入刚的jsonp.js 
      import jsonp from ''jsonp.js文件地址;

      import {commonParams,options}  from 'config.js 文件地址'  //把congfig.js 对象导入进来

      export function getRemented(){

        const url = '这个是你想要挖掘的地址'  ;

    //例如我想要的地址是:https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg

        const data = Object.assign({},commonParams,{  //这些参数都是可以在network Header 下 query string parameters有
          platform:'h5',

          uin:0,

          needNewCode:1
        })

        return jsonp(url,data,options)

      }

      2. config.js //用途把公共的参数提取出来

        代码如下:

        export const commonParams = {
          
    g_tk:5318,

          inCharset: 'utf-8',

          outCharset:'utf-8',

        notice:0,
        format:'jsonp'

        }

        export const options = {
          param:'jsonpCallback'
        }

     

        export const ERR_OK = 0;  

        

     //在自己的模块中调用 既可以看到数据
            

    <template>
    <div id="app">

    </div>
    </template>

    <script type="text/ecmascript-6">
    import{getRemented} from '../../api/recomm'
    import {ERR_OK} from '../../api/config'
    export default{
    data(){
    return{}
    },
    created(){
    this._getData();
    },
    methods:{
    _getData(){
    getRemented().then((res)=>{
    if(res.code===ERR_OK){
    console.log(res.data)
    }
    })
    }
    }
    }
    </script>

    <style lang="scss">
      #app {
      font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    /*color: #2c3e50;*/
    }
    </style>

     

      

  • 相关阅读:
    parse_str — 将字符串解析成多个变量
    HTTP 协议入门
    Ruby自动文档工具 RDoc 3.3 发布 狼人:
    用好IE9浏览器必须要知道的九件事 狼人:
    微软缘何认为VB与C#需要异步语法 狼人:
    微软资深软件工程师:阅读代码真的很难 狼人:
    20款Web应用:可以替代桌面软件 狼人:
    互联网公司完善商业模式需完成七件事情 狼人:
    改良程序需要的11个技巧 狼人:
    开源网站建设工具Drupal 7发布 狼人:
  • 原文地址:https://www.cnblogs.com/BlogRegisterAspx/p/8398404.html
Copyright © 2020-2023  润新知