PowerShell,下载 StackOverflow 答案或评论的内容

标签 powershell markdown stack-overflow invoke-webrequest

StackOverflow 问题线程中的每个答案或评论都有一个唯一的 URL。我们如何将该 URL 与 Invoke-WebRequest (或其他工具)一起使用来捕获迷你 Markdown 中的答案或评论的内容,并从中获取一些有用的信息?

一些答案​​包含完整的脚本,我有时希望自动检索到各种系统上的 .ps1 文件中。例如,给定此 URL https://superuser.com/questions/176624/linux-top-command-for-windows-powershell/1426271#1426271 ,我想仅获取 PowerShell 代码部分并将其通过管道传输到名为 mytop.ps1 的文件中。

最佳答案

您可以使用StackExchange REST API提出这个问题,特别是 answers-by-id .

它仍然不会为您提供 Markdown ,但使用 JSON 响应而不是解析整个页面源代码会更容易深入到答案的正文。实际上,我认为它为答案正文输出 HTML 甚至比 Markdown 更好,因为你始终得到 <code>元素而不必解析 all the different ways code can be formatted using markdown (例如代码围栏和缩进)。

$answer = Invoke-RestMethod 'https://api.stackexchange.com/2.3/answers/1426271?site=superuser&filter=withbody'

$codes = [RegEx]::Matches( $answer.items.body, '(?s)<code>(.*?)</code>' ).ForEach{ $_.Groups[1].Value }

# This gives you the PowerShell script for this particular answer only!
$codes[6]

因为可以有多个<code>元素,您可能希望使用启发式方法来确定包含 PowerShell 脚本的元素,例如。 G。按长度排序并检查代码是否由多行组成。

关于PowerShell,下载 StackOverflow 答案或评论的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74395286/

相关文章:

c++ - 为什么非常大的 If 语句会导致堆栈溢出

azure - 在 powershell 脚本中加密 Azure 存储帐户 key

Powershell 函数被传递了太多参数

python - Django / python : Convert Markdown to Secure HTML

java 堆栈溢出错误

java - 值动画器循环导致 java.lang.StackOverflowError : stack size 8MB 崩溃

powershell - 使用 Azure Powershell 关闭没有云服务名称创建的 VM

PowerShell:限制变量值

markdown - 什么文件使用 .md 扩展名?我应该如何编辑它们?

c - 在 Doxygen 代码块中演示 Doxygen 的使用