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

使用powershell自动从网站下载文件(不知道文件的url),powershell,Powershell,我想从我们的信用卡提供商的网站上自动下载每日报告 文件是动态生成的,所以我不知道文件本身的实际URL 我可以使用powershell导航和登录到网页,并单击“下载报告”按钮。但随后出现了“文件下载”对话框,我不知道如何按下该对话框上的“保存”按钮 我的选择似乎是: 以某种方式找到该窗口,并尝试发送击键 在对话框出现时找到文件的URL,然后直接下载 找到一种方法来禁用ie中的“文件下载”框(将其放在受信任的站点中不起作用) 我正在使用: $ie = New-Object -com "Inter

我想从我们的信用卡提供商的网站上自动下载每日报告

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

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

我的选择似乎是:

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

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

  • 找到一种方法来禁用ie中的“文件下载”框(将其放在受信任的站点中不起作用)

我正在使用:

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

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

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

为此,发送击键非常脆弱。单击“保存”后会发生什么?此时将打开一个对话框,您应该导航到一个文件夹并单击“确定”。这意味着你需要再次找到窗口。如果有类似的窗口打开呢?您的脚本能否找到正确的窗口? (对于其他需要隐藏/显示/查找窗口并发送击键的情况,我建议您这样做。)

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

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


没有访问该网站的权限,很难说更多的话。

如果您确实需要以编程方式与应用程序交互,我建议您使用

该库为.NET3.5提供的一些自动化函数提供了包装

如上所述,最好的方法是使用Net.WebClient而不是IE实例。
如果您需要重建GET或POST请求,您可以使用Firebug来检查供应商提供的页面。

我首先要确保您的供应商没有像许多供应商那样提供某种类型的api。第二,当你看到页面时,点击按钮的动作与一个javascript函数链接相关联,或者我认为按钮的动作最终会将你重定向到你要查找的文件。没有标准级别的api。该按钮调用一些javascript来验证表单,然后将表单操作设置为“customReport.do”并提交表单。这时会出现“文件下载”框。请查看WebClient哇,我从没想到编写报告下载脚本会如此困难。谢谢你提供的信息,至少我现在知道我需要想一个不同的方法。