我正在尝试从aspx网站上获取csv
。没有与csv
的直接链接,它是在发布表单时生成的服务器。
以下使用UrlFetchApp在Google App Script中正常运行:
它返回原始.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
我省略了另外两个我尝试过的结果相同的库。 axios(node.js)和request(node.js)
为什么请求适用于Google脚本,而不适用于其他更受欢迎的库。
我可能缺少一些简单的东西,但经过几个小时尝试不同的标题配置和多个库,我感到很茫然。
答案 0 :(得分:0)
我可以在两个代码段之间看到的第一个区别是你没有将你的cookie传递给Python版本。
如果您查看响应中的HTML,将会很有用。也许有一些错误信息(例如:请登录)。
尝试adding your cookies to the request,看看是否有帮助。