powershell - 使用 powershell 自动从网站下载文件(不知道文件的 url)

标签 powershell

我想每天自动从我们的信用卡提供商的网站下载一份报告。

文件是动态生成的,所以我不知道文件本身的实际 URL。

我可以使用 powershell 导航和登录网页,然后单击“下载报告”按钮。但是随后出现“文件下载”对话框,我不知道如何按该对话框上的“保存”按钮。

看来我的选择是:

  • 以某种方式找到该窗口,并尝试发送击键

  • 不知何故在对话框出现时找到文件的URL,然后直接下载。

  • 找到一种方法来禁用 ie 中的“文件下载”框。 (把它放在受信任的网站上是行不通的)

我正在使用:

$ie = New-Object -com "InternetExplorer.Application"

您认为最好的方法是什么?

最佳答案

为此,最好的选择是要求提供商(如果可能)发布一些 API。

为此,发送击键非常脆弱。 点击保存后会发生什么?将打开一个对话框,您应该导航到一个文件夹,然后单击确定。这意味着您需要重新找到窗口。如果打开了一些类似的窗口怎么办?您的脚本能否找到正确的窗口? (对于其他需要隐藏/显示/查找窗口和发送击键的场景,我建议使用 Autohotkey。)

其他可能性取决于它是什么网站。该文件似乎是作为对 POST 命令的响应而生成的。这意味着没有可以下载的直接链接。即使有链接,也可能无法通过 Net.WebClient 下载,因为您不会发送任何身份验证信息(查询字符串中的 session cookie 或 session ID)。您需要解析例如来自 $ie.Document.cookie 的 cookie 并将它们添加到请求中。

但是,在某些情况下,您可以使用 [System.Net.WebRequest]$webRequest = [System.Net.WebRequest]::Create($url); 并指定 POST 方法和数据并等待响应(这将是文件)。这将模仿点击提交按钮。但同样,如果没有凭据,它可能会失败。

没有访问该站点,很难说更多。

关于powershell - 使用 powershell 自动从网站下载文件(不知道文件的 url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230242/

相关文章:

powershell - 远程安装打印机

Azure:将powershell的结果存储到存储帐户中

python - 我无法为 python 安装 'pip'

powershell - 如何配置单个数据库和服务器的日志分析?

powershell - 从数组中返回具有最高值的对象

powershell - 在Powershell中需要一些逻辑来衡量最新

powershell - 从 PowerShell 更改文件的图标

powershell - 如何使用 Powershell 中的 Edge Selenium webdriver 检查窗口是否最小化

windows - 如何批量重命名包含数字和修改日期的文件?

regex - PowerShell:在两个单词之间查找文本