You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell获取StackOverflow回答/评论内容并提取脚本

提取Stack Exchange回答中PowerShell代码的方法

核心思路

通过Invoke-WebRequest获取目标回答页面,解析HTML定位到指定回答区块,提取其中的PowerShell代码块并保存为.ps1文件。

具体实现步骤

  • 1. 定义参数:指定目标回答的URL和输出文件路径
  • 2. 获取并解析页面:调用Invoke-WebRequest拉取页面,借助HtmlAgilityPack(需提前安装)解析HTML结构
  • 3. 定位目标回答:根据URL中的锚点ID(如示例中的1426271)找到对应的回答容器
  • 4. 提取代码块:在回答容器内筛选出<pre><code>标签包裹的内容,还原HTML实体编码(如&lt;转<)
  • 5. 保存代码:将提取到的代码写入指定的.ps1文件

示例脚本

# 首次运行需安装HtmlAgilityPack
# Install-Package HtmlAgilityPack -Scope CurrentUser

# 配置参数
$targetUrl = "https://superuser.com/questions/176624/linux-top-command-for-windows-powershell/1426271#1426271"
$outputFile = ".\mytop.ps1"

# 获取页面内容
$response = Invoke-WebRequest -Uri $targetUrl -UseBasicParsing

# 解析HTML文档
$htmlDoc = New-Object HtmlAgilityPack.HtmlDocument
$htmlDoc.LoadHtml($response.Content)

# 从URL中提取回答ID并定位目标区块
$answerId = ($targetUrl -split '#')[-1]
$targetAnswer = $htmlDoc.GetElementbyId("answer-$answerId")

if ($targetAnswer) {
    # 提取所有代码块内容
    $codeBlocks = $targetAnswer.SelectNodes("//code")
    if ($codeBlocks) {
        $codeContent = [System.Web.HttpUtility]::HtmlDecode($codeBlocks.InnerText)
        # 写入到.ps1文件
        $codeContent | Out-File -FilePath $outputFile -Encoding utf8
        Write-Host "代码已成功保存到 $outputFile"
    } else {
        Write-Host "该回答中未找到代码块"
    }
} else {
    Write-Host "未找到指定ID的回答"
}

注意事项

  • 若页面存在反爬机制,可添加-UserAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"参数模拟浏览器请求
  • 如果回答包含多个代码块,可通过筛选code标签的class属性(如language-powershell)精准提取PowerShell代码

内容的提问来源于stack exchange,提问作者YorSubs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:05:20