powershell - 从 html 元素中提取 http 链接
问题描述
赛门铁克最近更改了他们的下载页面,该页面移至 Broadcom。从那时起Invoke-WebRequest
无法获取v5i64.exe
文件的 http url。
但是,在浏览器中使用开发人员工具查看页面正文部分内的元素级别时,可以找到 http url。
有没有人知道如何使用 PowerShell 提取这个每日更改的 url?
$webreq = Invoke-WebRequest "https://www.broadcom.com/support/security-center/definitions/download/detail?gid=sep"
$webreq.Links | Select href
解决方案
以下 PowerShell 脚本将提示您下载包含文本v5i64.exe
和HTTPS
. 这适用于 Windows 的 PowerShell 5.1。它不适用于 PowerShell 6 或 7(PowerShell 核心)。
在 Windows 10.0.18363.657、Internet Explorer 11.657.18362、PowerShell 5.1.18362.628 上测试
$url = "https://www.broadcom.com/support/security-center/definitions/download/detail?gid=sep"
$outfile = "./v5i64.exe"
$ie = New-Object -ComObject "InternetExplorer.Application"
$ie.visible=$True
while($ie.Busy) {
Start-Sleep -Milliseconds 100
}
$ie.navigate2($url)
while($ie.ReadyState -ne 4 -or $ie.Busy) {
Start-Sleep -milliseconds 500
}
$ie.Document.getElementsByTagName("a") | % {
if ($_.ie8_href -like "*v5i64.exe") {
if ($_.ie8_href -like "https://*") {
$len = (Invoke-WebRequest $_.ie8_href -Method Head).Headers.'Content-Length'
Write-Host "File:" $_.ie8_href
Write-Host "Size:" $len
$confirm = Read-Host "Download file? [y/n]"
if ($confirm -eq "y") {
Write-Host "Downloading" $_.ie8_href
Invoke-WebRequest -Uri $_.ie8_href -OutFile $outfile
}
}
}
}
$ie.Stop()
$ie.Quit()
推荐阅读
- amazon-web-services - 如何通过 API 检索 AWS RDS 数据库实例中的所有数据库列表?
- python - websocket握手期间的Django-channels错误:意外响应代码:404本地
- localdb - 是 x86 机器的 sqllocaldb.msi 2019
- javascript - 如何从 JSON 请求中删除不需要的字符
- layer - 如何在mapboxgl内的图层中使用Mapbox的tileset Id?
- java - 如何使用 Google Drive API v3 获取组织的 Google Workspace 中所有用户的所有文件?
- css - 所有 HTML 树的第一个元素的 CSS 属性
- java - timeDifference(DateTime) 对于 OpenNTF Domino API 中的 DateTime 类型不明确
- reactjs - 如何使用打字稿编写 es6 onchange 方法并做出反应?
- rust - 处理拒绝时获取当前路径