Как «щелкнуть» элемент из полученного объекта командой Invoke-WebRequest - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь автоматизировать сбор данных из списка совместимости оборудования vmware, ориентированного на продукты VSAN. У них есть страница с возможностью поиска, и как только вы введете запрос, вы получите список результатов. У них также есть кнопка, которая позволяет «экспортировать в CSV» результатов. Вот URL-адрес, с которым я пытаюсь работать:

https://www.vmware.com/resources/compatibility/search.php?deviceCategory=hdd&vsan_type=vsanhdd&page=1&display_interval=500&details=1

Я пытаюсь нажать эту кнопку «Экспорт в CSV» с помощью кода Powershell.

Я могу найти элемент, который пытаюсь щелкнуть, и вижу, что у него есть метод с именем. "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, который фактически генерирует файл. Запрос на публикацию содержит фактические данные, которые поступают в CSV, я полагаю, что они уже сгенерированы где-то на странице, но я не могу извлечь эту форму из переменной $ webrequest.

Также я вижу, что к телу функции добавлена ​​форма экспорта, я почти уверен, что это источник данных POST (кажется, что это делает функция javascript). Однако я не могу программно достичь того элемента «формы», который я вижу в Chrome Developer Tools при ручной проверке страницы.

Я был бы рад, если бы я мог извлечь либо данные POST, либо просто вызвать функцию экспорта в CSV и получить файл, который она выводит.

Любые идеи о том, как я могу выполнить любой из этих? Спасибо

1 Ответ

0 голосов
/ 07 июня 2019

Хотя мне не удалось найти способ выполнить это действие, это было всего лишь средство для достижения цели, возможность извлечь данные В конце концов я обнаружил, что у vmware есть несколько страниц .js, которые он использует для составления этого списка. На этих страницах .js находится полный набор данных vmware VCG, например, устройства ввода-вывода, серверы, узлы, готовые к 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
...