我正在使用Python请求包下载CSV文件。我通过Python成功地浏览了一个网页,但仍停留在下载文件的最后阶段。我被重定向到这里,html看起来(有点)像这样:
<html>
<body>
<form action='/export_data_test/convertxl.aspx' method='get'>
<input type='hidden' name='SID' value='me@domain.com'>
</form>
<script>window.onload = function() {document.forms[0].submit();}</script>
</body>
</html>
我习惯于提交使用POST方法的表单,但我看到GET正在被使用。此外,该页面会自动"加载"提交表单,因此浏览器通常会立即下载。目前还不清楚如何使用Python请求包来捕获这一点。
我试过:
session.get(domain+"/export_data_test/convertxl.aspx", data=payload, allow_redirects=True, verify=certifi.where())
但是,这会返回一个不包含任何内容的响应(我希望是CSV文件)。同样,通过浏览器的行为是下载文件。
如果其他人犯了和我一样的错误,get
方法将params
作为参数,而不是data
(用于post
方法)。因此,发送有效载荷的正确方式如下所示:
session.get(domain+"/export_data_test/convertxl.aspx",
params=payload,
allow_redirects=True,
verify=certifi.where())