提问者:小点点

节点请求vs python会话


我有一个工作的node.js脚本,它使用node.js请求模块编写。 我试图用会话模块将这个脚本转换为python。 我是python的新手,我按照python文档中提到的那样学习了它。 但我正在努力让我的代码正常工作。 我遇到的问题是用会话模块在后续请求中发送cookie值。 根据文档,它正在保存cookie,并在之后的任何请求中自动发送它们。 但是

下面是我的工作node.js脚本

const request = require('request');
const fs = require('fs');

const getOptions = {
    jar:true,
    followAllRedirects:true,
    method:'GET',
    url:'https://dummyurl.com'
};

request.get(getOptions,(err,response,html)=>{
    if(err){
        console.log('error in request');
        console.log(err);
    }
    else {

        const postOptions = {
            jar:true,
            followAllRedirects: true,
            method:'POST',
            url:'https://dummyurl.com',
            form:{
                'data':{
                    'page':2
                }
            }

        };

        request.post(postOptions,(err,response,html)=>{
            if(err){
                console.log('post err');
                console.log(err);
            }
            else {
                fs.writeFileSync('pyres.html',html,'utf8');
            }
        })
    }
});

这是我对上面脚本的python转换

s = requests.Session()
url= 'https://dummyurl.com'
response = s.get(url)
print(response.cookies)
data_url = 'https://dummyurl.com/'
postData = {
    "data":{
        "page":2
    }
}

resultResponse = s.post(data_url,data=postData)
print(resultResponse.content)

谁能指出这个代码中有什么错误吗?


共1个答案

匿名用户

实际上问题出在数据格式上。 在nodejs中,我这样发布它

{'data':{'page':2} }

但在python中应该这样转换

{
    'data[page]': '2'
}

我不确定为什么它不能在python中正常的json格式下工作