powershell - 如何从结果对象 Invoke-WebRequest 命令中“单击”元素
问题描述
我正在尝试从 vmware 硬件兼容性列表中自动收集数据,重点围绕 VSAN 产品。他们有一个可搜索的页面,一旦你提出请求,你就会得到一个结果列表。他们还有一个按钮,允许将结果“导出到 csv”。我正在尝试使用的 URL 是这个:
我正在尝试使用 Powershell 代码“单击”该“导出到 CSV”按钮。
我可以找到我试图单击的元素,并且我看到它有一个名为 ."click()" 的方法,但它在调用时没有任何作用。
$url = "https://www.vmware.com/resources/compatibility/search.php?deviceCategory=hdd&vsan_type=vsanhdd&page=1&display_interval=500&details=1"
$webrequest = Invoke-WebRequest -Uri $url
$a = $webrequest.ParsedHtml.getElementById("export_csv")
$a.Cick()
我注意到使用 Chromes 开发工具后,一旦单击 export_csv 按钮,就会向另一个 URL 发出发布请求,该 URL 实际上会生成文件。发布请求包含进入 CSV 的实际数据,我相信它已经在页面的某处生成,但我似乎无法从 $webrequest 变量中提取该表单。
此外,我还看到函数主体附加了一个导出表单,我很确定这是 POST 数据的来源(似乎有一个 javascript 函数在执行此操作)。但是,在手动检查页面时,我似乎无法以编程方式访问我可以在 Chrome 开发人员工具中看到的“表单”元素。
如果我可以提取 POST 数据,或者只是调用导出到 CSV 函数并获取它输出的文件,我会很高兴。
关于如何完成其中任何一个的任何想法?谢谢
解决方案
虽然我没有设法找到执行此操作的方法,但这只是达到目的的一种手段,能够提取数据最终我发现 vmware 有一些 .js 页面用于实际编译该列表。在这些 .js 页面中有整个 vmware VCG 数据集,例如 IO 设备、服务器、vSAN 就绪节点等。
因此,如果其他人觉得这很有用,下面是各种数据集的链接。这里的数据似乎被组织成 javascript 变量,可以按原样使用或解析为 Powershell 对象,就像我的情况一样。
https://www.vmware.com/resources/compatibility/js/data_cpu.js
https://www.vmware.com/resources/compatibility/js/data_server.js
https://www.vmware.com/resources/compatibility/js/data_io.js
推荐阅读
- java - 如何在 Java 中将数据记录到文件中
- python - 在 selenium python 中移动 web 元素的偏移量
- excel - 如何“单击”图像中显示的绿色箭头 [SAP 欢迎屏幕]
- python - 如何在 python-ldap 中解决“没有名为 'pyasn1_modules.rfc2251' 的模块”
- python - 相同的 Python 代码似乎具有不同的性能特征
- file - How to associate static files with user in Express?
- sql - 如何在 CLOB 列中插入数据(Oracle)
- jquery - 重复jquery函数
- c# - 在 Blazor 中获取子组件列表的最佳方法
- java - 将 DTO 转换为 DTO 数组