python 模拟ajax jsonp 请求

数据网址:科创板
目前我找到了相关结构,大概调用情况如下:
image.png

//申报稿
params = {
    'isPagination': 'true',
    'pageHelp.pageSize': '20',
    'sqlId': 'GP_GPZCZ_SHXXPL',
    'pageHelp.pageSize': '20',
    'fileType': '30,5,6',
    'pageHelp.pageNo': '7',
    'pageHelp.beginPage': '7',
    'pageHelp.endPage': '7',
    '_': '1576130531230',
}

//修改或添加参数
params.fileType = '30'
params.fileVersion = '1'
$.ajax({
    type: "get",
    cache: false,
    url: 'http://query.sse.com.cn/commonSoaQuery.do?jsonCallBack=?',
    data: params,
    dataType: "jsonp",
    //async: true,
    //jsonp: "jsonCallBack",
    //jsonpCallback: "jsonpCallback" + Math.floor(Math.random() * (100000 + 1)),
    timeout: 30000,
    success: function (data) {
        console.log(data)
    }
})

但是这种在Python脚本中使用requests库目前是无法模拟的。
python 中模拟的效果就类似这种:
image.png
红色箭头所指的callBack,是随机生成的,这好像不是ajax自己处理的,不太清楚。
我看了这个文档,讲了几种请求方式,但是pyton好像没办法模拟:
https://www.w3cschool.cn/json/4z2r1plk.html
我还想过直接执行js,但是会话信息无法处理,可以执行这个html页面:

<html>

<head>
    <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
</head>
<div>
    <button onclick="test()">test</button>

</div>

<script>
    function test() {
        //申报稿
        params = {
            'isPagination': 'true',
            'pageHelp.pageSize': '20',
            'sqlId': 'GP_GPZCZ_SHXXPL',
            'pageHelp.pageSize': '20',
            'fileType': '30,5,6',
            'pageHelp.pageNo': '7',
            'pageHelp.beginPage': '7',
            'pageHelp.endPage': '7',
            '_': '1576130531230',
        }

        //修改或添加参数
        params.fileType = '30'
        params.fileVersion = '1'
        $.ajax({
            type: "get",
            cache: false,
            url: 'http://query.sse.com.cn/commonSoaQuery.do?jsonCallBack=?',
            data: params,
            dataType: "jsonp",
            //async: true,
            //jsonp: "jsonCallBack",
            //jsonpCallback: "jsonpCallback" + Math.floor(Math.random() * (100000 + 1)),
            timeout: 30000,
            success: function(data) {
                console.log(data)
            }
        })
    }
</script>

</html>
阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题