Http Post请求返回HTML而不是csv数据



我正在尝试从aspx网站上获取csv。没有直接链接到csv,它是发布表单时服务器生成的。

以下内容在使用 UrlFetchApp 的 Google App 脚本中正常工作: 它返回原始.csv数据。

..// other code omitted for brevity
var page = UrlFetchApp.fetch(
"https://www.mycompanyurl.com/summary.aspx", {
"method": "POST",
"headers": {"Cookie": myCookieData},
"payload": {
'_ctl0:contact:isActive': '1',
'__VIEWSTATE': myViewstateData,
'__EVENTTARGET': '_ctl0:Main:ButtonExport',
'__EVENTARGUMENT': '',
'__LASTFOCUS': '',
'__VIEWSTATEENCRYPTED': '',
'__PREVIOUSPAGE': ''
}
});
Logger.log(page); // <---- prints the csv file content

我试图在 python 请求库中模拟这一点。

..// other code omitted for brevity
..// cookies are in the session 's'
page = s.post(
'https://www.mycompanyurl.com/summary.aspx', 
data={
'_ctl0:contact:isActive': '1',
'__VIEWSTATE': myViewstateData,
'__EVENTTARGET': '_ctl0:Main:ButtonExport',
'__EVENTARGUMENT': '',
'__LASTFOCUS': '',
'__VIEWSTATEENCRYPTED': '',
'__PREVIOUSPAGE': ''
}
);
print(page) // <---- prints the html content of the page

我省略了我尝试过的其他 2 个库,它们以相同的结果结束。 axios (node.js) 和 request (node.js)

为什么该请求适用于 Google 脚本,但在其他更流行的库中无效。

可能我错过了一些简单的东西,但是经过几个小时的尝试不同的标头配置和多个库,我不知所措。

我可以看到两个代码片段之间的第一个区别是你没有将cookie传递到Python版本中。

如果您查看一下响应中得到的 HTML,那将是有益的。也许有一些错误消息(例如:请登录)。

尝试将 cookie 添加到请求中,看看是否有帮助。

最新更新