如何用PowerShell从官网获取Cura最新版本的下载URL?
获取Ultimaker Cura最新Windows版本下载URL的PowerShell解决方案
你的方法失效的核心原因是:ultimaker.com的下载页面采用动态渲染,实际的GitHub下载链接是通过JavaScript加载的,直接用Invoke-WebRequest抓取静态HTML无法获取到目标链接。
下面提供两种可靠的解决方案,优先推荐第一种:
方法1:使用GitHub REST API(推荐)
Ultimaker Cura的所有正式版本都托管在GitHub Releases上,通过GitHub官方API可以直接获取最新版本的下载链接,稳定性远高于抓取官网页面。
执行以下PowerShell代码即可获取Windows 64位版本的下载URL:
# 请求GitHub API获取Cura最新发布信息 $latestRelease = Invoke-RestMethod -Uri "https://api.github.com/repos/Ultimaker/Cura/releases/latest" # 筛选出Windows 64位的exe安装包链接 $win64DownloadUrl = $latestRelease.assets | Where-Object { $_.name -match "win64\.exe$" } | Select-Object -ExpandProperty browser_download_url # 输出结果 $win64DownloadUrl
代码说明:
https://api.github.com/repos/Ultimaker/Cura/releases/latest是GitHub提供的获取指定仓库最新发布的API接口- 返回的JSON数据中,
assets字段包含了该版本的所有下载文件,通过Where-Object筛选文件名以win64.exe结尾的条目 - 最后提取
browser_download_url字段,就是直接的下载链接
方法2:使用无头浏览器抓取官网(不推荐)
如果必须从ultimaker.com页面获取链接,需要借助无头浏览器等待页面动态加载完成后再抓取内容。这种方法依赖官网页面结构,一旦官网更新就会失效,维护成本高。
示例步骤(需额外安装依赖):
- 安装Selenium PowerShell模块:
Install-Module -Name Selenium -Scope CurrentUser
- 下载对应浏览器的驱动(如ChromeDriver)并配置到环境变量
- 编写代码加载页面并抓取链接:
$driver = Start-SeChrome -Headless $driver.Navigate().GoToUrl("https://ultimaker.com/software/ultimaker-cura") # 等待下载按钮区域加载完成(需根据页面实际元素调整等待条件) Start-Sleep -Seconds 5 $downloadLinks = $driver.FindElementsByTagName("a") | Where-Object { $_.GetAttribute("href") -match "github\.com.*\.exe" } # 提取第一个匹配的链接 $downloadUrl = $downloadLinks.GetAttribute("href") $driver.Quit() $downloadUrl
内容的提问来源于stack exchange,提问作者atefeh kasiri
相关产品推荐
相关产品推荐

