【发布时间】:2018-10-16 01:05:16
【问题描述】:
我正在尝试自动从网站下载文件。当我手动下载时,我所要做的就是单击“保存”图标(软盘),然后会弹出另一个窗口一秒钟并开始下载(同时弹出的窗口消失)。
我通常做的(当我自动下载时)是找到文件的 URL,然后我使用 URLDownloadToFile 函数。但在这种情况下,我无法在 html 中找到 url。我尝试在对象上使用.click 和FireEvent,但没有任何效果。
所以我开始考虑(基于此站点中的类似问题)当我按下“保存”图标时脚本会生成 URL。不幸的是,我不熟悉 javascript 或它是如何工作的。现在,我正在尝试使用浏览器的开发人员工具控制台来确定单击对象时会发生什么。顺便说一句:这个对象是一个<img> 对象。
我在网上搜索了答案,我想如果我想下载文件,我必须自己调用 javascript,比如execScript。但是,当我单击图标时,如何找出调用了哪个脚本?更重要的是,我是否能够在不完全了解网页工作原理的情况下理解您的答案? :)
P.S.:我知道如果我能给你网站地址会容易得多,但它需要登录才能看到我正在谈论的东西......
【问题讨论】:
-
TBH 我不知道如何在这里提供帮助。没有 HTML 可以分享吗?缩小范围的东西。这一点感觉都没有minimal reproducible example。我对 js 函数调用的有限经验是,它确实有助于在现场看到它并能够计算出页面的整个流程。我确实注意到了您关于登录的评论。
-
@QHarr 我编辑了我的问题,让我知道如何提供更多帮助,而无需访问实际站点。
-
有什么说 image.setUrl 的吗?
-
HTML 代码中没有。如果我稍微打开 EventListener(你可以在我刚刚添加到问题的第二个打印屏幕上看到它),我会看到“proto”函数相互嵌入(无限 - 如我所见)。但是里面有“set caller”和“set argument”之类的东西。
-
您可以使用 Fiddler 检查您在浏览器中手动单击并下载文件时是否生成了任何 XHR,如果是,则从 VBA 代码中重现该 XHR。
标签: vba excel web-scraping automation xmlhttprequest